在學(xué)習(xí)如何更有效地使用kubectl之前,您應(yīng)該基本了解它是什么以及它是如何工作的。
成都創(chuàng)新互聯(lián)公司是專業(yè)的桓臺(tái)網(wǎng)站建設(shè)公司,桓臺(tái)接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行桓臺(tái)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
從用戶角度來(lái)說(shuō):
kubectl是控制Kubernetes的駕駛艙。它允許您執(zhí)行所有可能的Kubernetes操作。
從技術(shù)角度來(lái)說(shuō):
kubectl是Kubernetes API的客戶端,通過(guò)該客戶端我們可以完全控制Kubernetes,這意味著每個(gè)Kubernetes操作都作為API端口公開(kāi),并且可以通過(guò)對(duì)此端點(diǎn)的HTTP請(qǐng)求來(lái)執(zhí)行。
查看所有pod
kubectl get pods
動(dòng)態(tài)監(jiān)聽(tīng)查看所有pod
kubectl get pods-w
查看所有deploymen
kubectl get deployment
查看所有service服務(wù)
kubectl get service
查看關(guān)聯(lián)后端節(jié)點(diǎn)
kubectl get endpoints
查看相關(guān)POD的日志
kubectl get logs NAME
kubectl scale [--current-replicas=replicas] --replicas=replicas NAME
其中,
“--current-replicas” 當(dāng)前副本數(shù)量
“--replicas” 副本數(shù)量
創(chuàng)建--》發(fā)布--》更新--》回滾--》刪除
kubect run NAME --image=image [--port=port] [--replicas=replicas] [--command]
“--image” 指定鏡像
“--replicas” 指定副本數(shù)量
“--port” 指定內(nèi)部通信端口
實(shí)例:kubectl run nginx --image=nginx:latest --replicas=3
以最新版nginx作為鏡像建立有著三個(gè)副本的pods
kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]
“-f FILENAME ” 指定YAML文件名稱
“TYPE NAME” 指定deploymen名稱
“--type” 指定服務(wù)類型(默認(rèn)為集群地址-clusterip)
“--port=80” 內(nèi)部通信的端口
“--target-port=80” 暴露在外部的端口
實(shí)例:kubectl expose deploy/nginx --port=80 --target-port=80 --name=nginx-svc --type=NodePort
將nginx以內(nèi)部端口80,暴露端口80,指定名稱為nginx-svc,類型為節(jié)點(diǎn)形式進(jìn)行發(fā)布。
kubectl set image deploy/NAME NAME=新版本
實(shí)例:kubectl set image deploy/nginx nginx=nginx:1.14
變更nginx版本為nginx1.14
kubectl rollout [commands]
常用command:
history 顯示 rollout 歷史
pause 標(biāo)記提供的 resource 為中止?fàn)顟B(tài)
resume 繼續(xù)一個(gè)停止的 resource
status 顯示 rollout 的狀態(tài)
undo 撤銷上一次的 rollout
實(shí)例:kubectl rollout undo deploy/nginx
kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)]) [options]
實(shí)例:
kubectl delete svc/nginx-svc
kubectl delete deploy/nginx
查看資源對(duì)象簡(jiǎn)寫
kubectl api-resources
查看具體資源詳細(xì)信息
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]
實(shí)例:
kubectl describe pod/nginx-7697996758-9d6tf
kubectl describe svc/nginx
編輯資源詳細(xì)信息
kubectl edit (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]
實(shí)例:
kubectl edit deploy/NAME
進(jìn)入相應(yīng)pod中*
kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options]
例子:kubectl exec -it nginx-7697996758-9d6tf bash
查看生成的YAML格式文件
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml
查看生成的JSON格式文件
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json
生成YAML 、 JSON文件導(dǎo)出
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json(yaml) > test.json(yaml)
將現(xiàn)有資源進(jìn)行導(dǎo)出
kubectl get svc/nginx-svc --export -o yaml > nginx-svc.yaml
測(cè)試命令正確性,不執(zhí)行(類似shell腳本中的sh -n)
kubectl run nginx --image=nginx --port=80 --replicas=2 --dry-run
通過(guò)YAML文件建立
kubectl create -f FILENAME [options]
例子:kubectl create -f nginx.yaml
通過(guò)YAML文件升級(jí)deployment
kubectl apply -f FILENAME
相同點(diǎn) | 不同點(diǎn) |
---|---|
如果yaml文件中的kind值為deployment,那么上面這兩個(gè)命令都可以創(chuàng)建一個(gè)deployment,生成相應(yīng)數(shù)量的pod | create命令:是先刪除所有現(xiàn)有的東西,重新根據(jù)yaml文件生成新的。所以要求yaml文件中的配置必須是完整的 |
apply命令:根據(jù)配置文件里面列出來(lái)的內(nèi)容,升級(jí)現(xiàn)有的。所以yaml文件的內(nèi)容可以只寫需要升級(jí)的屬性 |