kubectl是用于針對(duì)Kubernetes集群運(yùn)行命令的命令行接口爸吮。你可以通過kubectl部署集群應(yīng)用所宰,檢查和管理集群資源,查看日志等。
一甫菠、安裝kubectl
- Linux系統(tǒng)
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/linux/amd64/kubectl
- Mac系統(tǒng)
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/darwin/amd64/kubectl
- Windows系統(tǒng)
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.13/bin/windows/amd64/kubectl.exe
注意:
kubenretes版本大于1.10請(qǐng)使用1.10以上的kubectl工具,小于1.10版本請(qǐng)使用1.10以下的kubectl工具冕屯,上述命令中v1.8.13可根據(jù)需求替換成業(yè)務(wù)所需的kubectl版本寂诱。
添加可執(zhí)行權(quán)限:
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
測(cè)試安裝是否成功:
$ 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
以騰訊云容器服務(wù)為例安聘。下圖是在騰訊云上創(chuàng)建的k8s集群:
騰訊云容器服務(wù)(Tencent Kubernetes Engine痰洒,TKE)是高度可擴(kuò)展的高性能容器管理服務(wù),您可以在托管的云服務(wù)器實(shí)例集群上輕松運(yùn)行應(yīng)用程序浴韭。使用該服務(wù)丘喻,您將無需安裝、運(yùn)維念颈、擴(kuò)展您的集群管理基礎(chǔ)設(shè)施泉粉,只需進(jìn)行簡單的 API 調(diào)用,便可啟動(dòng)和停止 Docker 應(yīng)用程序榴芳,查詢集群的完整狀態(tài)嗡靡,以及使用各種云服務(wù)。您可以根據(jù)資源需求和可用性要求在集群中安排容器的置放窟感,滿足業(yè)務(wù)或應(yīng)用程序的特定要求讨彼。
點(diǎn)擊“顯示憑證”,彈出集群憑證信息:
按提示配置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為證書路徑柿祈,注意證書的權(quán)限要設(shè)置為只讀權(quán)限哈误。
運(yùn)行結(jié)果如下:
[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. 創(chuàng)建資源對(duì)象
根據(jù)yaml配置文件一次性創(chuàng)建service和rc:
$ kubectl create -f my-service.yaml -f my-rc.yaml
根據(jù)<directory>目錄下所有.yaml、.yml紧索、.json文件的定義進(jìn)行創(chuàng)建操作:
$ kubectl create -f <directory>
2. 查看資源對(duì)象
查看所有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. 描述資源對(duì)象
顯示Node的詳細(xì)信息:
# 查看所有node
$ kubectl describe nodes
# 查看指定node
$ kubectl describe nodes <node-name>
顯示Pod的詳細(xì)信息
$ kubectl describe pods/<pod-name>
4. 刪除資源對(duì)象
基于pod.yaml定義的名稱刪除Pod:
$ kubectl delete -f pod.yaml
刪除所有包含某個(gè)label的Pod和service
$ kubectl delete pods, service -l name=<label-name>
刪除所有Pod:
$ kubectl delete pods --all
5. 執(zhí)行容器的命令
執(zhí)行Pod的date命令,默認(rèn)使用Pod中的第一個(gè)容器執(zhí)行:
$ kubectl exec <pod-name> date
指定Pod某個(gè)容器執(zhí)行date命令:
$ kubectl exec <pod-name> -c <container-name> date
進(jìn)入容器:
$ kubectl exec -it <pod-name> -c <container-name> bash
與docker exec -it <container-id> bash
類似珠漂。
6. 查看容器的日志
查看容器輸出到stdout的日志:
$ kubectl logs <pod-name>
查看容器的實(shí)時(shí)日志晚缩,相當(dāng)于tail -f命令:
$ kubectl logs -f <pod-name> -c <container-name>