kubectl是用于针对Kubernetes集群运行命令的命令行接口。你可以通过kubectl部署集群应用,检查和管理集群资源,查看日志等。
一、安装kubectl
- Linux系统
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/linux/amd64/kubectl
- Mac系统
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/darwin/amd64/kubectl
- Windows系统
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/windows/amd64/kubectl.exe
注意:
kubenretes版本大于1.10请使用1.10以上的kubectl工具,小于1.10版本请使用1.10以下的kubectl工具,上述命令中v1.8.13可根据需求替换成业务所需的kubectl版本。
添加可执行权限:
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
测试安装是否成功:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5", GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean", BuildDate:"2018-06-21T11:46:00Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10+", GitVersion:"v1.10.5-tke.5", GitCommit:"ad6116adbd82fbf203e20adcca72be022425441c", GitTreeState:"clean", BuildDate:"2019-06-17T10:59:40Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
二、配置kubectl
以腾讯云容器服务为例。下图是在腾讯云上创建的k8s集群:
腾讯云容器服务(Tencent Kubernetes Engine,TKE)是高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。使用该服务,您将无需安装、运维、扩展您的集群管理基础设施,只需进行简单的 API 调用,便可启动和停止 Docker 应用程序,查询集群的完整状态,以及使用各种云服务。您可以根据资源需求和可用性要求在集群中安排容器的置放,满足业务或应用程序的特定要求。
点击“显示凭证”,弹出集群凭证信息:
按提示配置hosts信息:
sudo sed -i '$a 10.0.1.8 cls-xxxxxx.ccs.tencent-cloud.com' /etc/hosts
再配置:
kubectl config set-credentials default-admin --username=admin --password=<password>
kubectl config set-cluster default-cluster --server=https://cls-xxxxxx.ccs.tencent-cloud.com --certificate-authority=/etc/kubernetes/cluster-ca.crt
kubectl config set-context default-system --cluster=default-cluster --user=default-admin
kubectl config use-context default-system
其中/etc/kubernetes/cluster-ca.crt为证书路径,注意证书的权限要设置为只读权限。
运行结果如下:
[root@VM_13_85_centos ~]# kubectl config set-credentials default-admin --username=admin --password=xxxxx85a7RpEdZZxihcK1hO3eixxxxx
User "default-admin" set.
[root@VM_13_85_centos ~]# kubectl config set-cluster default-cluster --server=https://cls-xxxxxx.ccs.tencent-cloud.com --certificate-authority=/etc/kubernetes/cluster-ca.crt
Cluster "default-cluster" set.
[root@VM_13_85_centos ~]# kubectl config set-context default-system --cluster=default-cluster --user=default-admin
Context "default-system" created.
[root@VM_13_85_centos ~]# kubectl config use-context default-system
Switched to context "default-system".
三、kubectl常用命令
输入kubectl help
,获取kubectl的帮助文档。
[root@VM_231_116_centos ~]# kubectl help
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
...
1. 创建资源对象
根据yaml配置文件一次性创建service和rc:
$ kubectl create -f my-service.yaml -f my-rc.yaml
根据<directory>目录下所有.yaml、.yml、.json文件的定义进行创建操作:
$ kubectl create -f <directory>
2. 查看资源对象
查看所有Pod列表:
$ kubectl get pods
#或者pod,po都可以
$ kubectl get po
查看rc和service列表:
[root@VM_231_116_centos ~]# kubectl get rc
No resources found.
[root@VM_231_116_centos ~]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
api-xxxLoadBalancer 192.168.255.115 10.0.3.25 8000:31256/TCP 97d
api-xx-due LoadBalancer 192.168.255.217 10.0.3.44 8000:31484/TCP 88d
api-xx-web LoadBalancer 192.168.255.11 10.0.3.3 80:30731/TCP 139d
3. 描述资源对象
显示Node的详细信息:
# 查看所有node
$ kubectl describe nodes
# 查看指定node
$ kubectl describe nodes <node-name>
显示Pod的详细信息
$ kubectl describe pods/<pod-name>
4. 删除资源对象
基于pod.yaml定义的名称删除Pod:
$ kubectl delete -f pod.yaml
删除所有包含某个label的Pod和service
$ kubectl delete pods, service -l name=<label-name>
删除所有Pod:
$ kubectl delete pods --all
5. 执行容器的命令
执行Pod的date命令,默认使用Pod中的第一个容器执行:
$ kubectl exec <pod-name> date
指定Pod某个容器执行date命令:
$ kubectl exec <pod-name> -c <container-name> date
进入容器:
$ kubectl exec -it <pod-name> -c <container-name> bash
与docker exec -it <container-id> bash
类似。
6. 查看容器的日志
查看容器输出到stdout的日志:
$ kubectl logs <pod-name>
查看容器的实时日志,相当于tail -f命令:
$ kubectl logs -f <pod-name> -c <container-name>