日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

kubectl 命令管理(1)

發(fā)布時(shí)間:2024/9/3 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kubectl 命令管理(1) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一: 陳述式資源管理方法
    • 1.1 查看版本信息和tab補(bǔ)全
    • 1.2 基本信息查看
  • 二: 項(xiàng)目的生命周期
    • 2.1 使用kubectl run 命令創(chuàng)建并允許容器鏡像
    • 2.2 使用kubectl expose命令發(fā)布資源
      • 2.2.1 發(fā)布
      • 2.2.2 查看pod網(wǎng)絡(luò)信息和service暴露端口
      • 2.2.3 查看service關(guān)聯(lián)的資源
      • 2.2.4 在所有的node節(jié)點(diǎn)上查看負(fù)載均衡端口
    • 2.3 使用kubectl set 命令更新資源信息
      • 2.3.1 獲取當(dāng)前nginx的版本號(hào)
      • 2.3.2 將版本跟新為1.15
    • 2.4 使用kubectl rollout 對(duì)資源進(jìn)行回滾
    • 2.5 使用kubectl delete刪除資源
  • 三: 金絲雀發(fā)布(Canary Release)
    • 3.1 什么是金絲雀發(fā)布
    • 3.2 配置deployment使用金絲雀發(fā)布
      • 3.2.1 發(fā)布nginx服務(wù)
      • 3.2.1 更新deployment版本,并配置暫停deploymen
      • 3.2.2 訪問(wèn)測(cè)試,查看版本號(hào)
      • 3.2.3 在確保更新的pod沒(méi)有問(wèn)題后,繼續(xù)更新
      • 3.2.4 查看最后的更新情況

一: 陳述式資源管理方法

陳述式源管理方法:

  • kubernetes集群管理集群資源的唯一入口是通過(guò)相應(yīng)的方法調(diào)用apiserver的接口
  • kubect1是官方的CTL 命令行工具,用于與apiserver進(jìn)行通信,將用戶在命令行輸入的命令,組織并轉(zhuǎn)化為apiserver能識(shí)別的信息,進(jìn)而實(shí)現(xiàn)管理k8s各種資源的一種有效途徑
  • kubect1的命令大全
  • kubectl --help
  • k8s中文文檔: http://docs.kubernetes.org.cn/683.html
  • 4·對(duì)資源的增、刪、查操作比較方便,但對(duì)改的操作就不容易了

    1.1 查看版本信息和tab補(bǔ)全

    #查看版本信息kubectl version

    #配置kubectl 自動(dòng)補(bǔ)全 source <(kubectl completion bash)#將命令寫(xiě)入到/root/.bashrc(root用戶。如果是全局寫(xiě)入到/etc/bashrc),開(kāi)機(jī)自動(dòng)運(yùn)行 echo 'source <(kubectl completion bash)' >> ~/.bashrc source ~/.bashrc

    #查看資源對(duì)象簡(jiǎn)寫(xiě) kubectl api-resources

    #查看集群信息 kubectl cluster-info

    #動(dòng)態(tài)查看服務(wù)日志信息,此命令是centos7 開(kāi)始有的。-f 表示動(dòng)態(tài)查看 journalctl -u kubelet -f

    1.2 基本信息查看

    kubectl ?get ?[-n ?namespace]? ?[-o ?wide ?| ?json ?|? yaml]

    獲取資源的相關(guān)信息

    • -n指定命名空間,

    • -o指定輸出格式

    • resource可以是具體資源名稱,如pod nginx-xxx;也可以是資源類型,如pod;或者all (僅展示幾種核心資源,并不完整)

    • –all-namespaces或-A :表示顯示所有命令空間,

    • –show-labels :顯示所有標(biāo)簽

    • -l ?app :僅顯示標(biāo)簽為app的資源

    • -l ?app-nginx :僅顯示包含app標(biāo)簽,且值為nginx的資源

    #查看master 節(jié)點(diǎn)狀態(tài)(可以簡(jiǎn)寫(xiě)cs) [root@master ~]# kubectl get componentstatuses NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health":"true"}

    #查看命名空間(可以簡(jiǎn)寫(xiě)ns) [root@master ~]# kubectl get namespaces NAME STATUS AGE default Active 21h #默認(rèn)使用default命名空間 kube-node-lease Active 21h kube-public Active 21h kube-system Active 21h#查看defalut命名空間的所有資源(-n default 可以省略) kubectl get all -n default

    命名空間作用:用于允許不同 命名空間的相同類型的資源重名

    #創(chuàng)建命名空間 test kubectl create ns test#查看命名空間 kubectl get ns#刪除命名空間test kubectl delete ns test

    #在命名空間kube-public 中創(chuàng)建副本控制器(deployment)來(lái)啟動(dòng)pod(nginx-wx),使用鏡像nginx kubectl create deployment nginx-wx --image=nginx -n kube-public#查看命名空間kube-public 里的所有資源 kubectl get all -n kube-public

    #描述命名空間kube-public里的deployment 副本控制的詳細(xì)信息 kubectl describe -n kube-public deployment nginx-wx #查看命名空間kube-public 里的pod(nginx-wx....)的詳細(xì)信息 kubectl get pod -n kube-public nginx-wx-7d5458c6f5-hhjmh

    #查看命名空間kube-public里pod信息(使用pod,pods都可以)kubectl get pods -n kube-public

    #master節(jié)點(diǎn)上#查看kube-public命名空間里的pod信息。-o 指定輸出方式 [root@master ~]# kubectl get pods -o wide -n kube-public#kubectl exec 跨主機(jī)登錄docker [root@master ~]# kubectl exec -it -n kube-public nginx-wx-7d5458c6f5-hhjmh bash#在容器里創(chuàng)建abc.txt root@nginx-wx-7d5458c6f5-hhjmh:/# touch abc.txt root@nginx-wx-7d5458c6f5-hhjmh:/# ls root@nginx-wx-7d5458c6f5-hhjmh:/# exit#pod所在的node節(jié)點(diǎn)上 #找出對(duì)應(yīng)容器的id [root@node01 ~]# docker ps | grep 'nginx-wx'#進(jìn)入容器查看 [root@node01 ~]# docker exec -it d07e bash root@nginx-wx-7d5458c6f5-hhjmh:/# ls

    #刪除(重啟)pod資源,由于存在deployment/rc之類的副本控制器,刪除pod 也會(huì)重新拉起來(lái)kubectl delete pod -n kube-public nginx-wx-7d5458c6f5-hhjmh#若pod始終無(wú)法刪除(如一值處于terminatin)可以使用此命令強(qiáng)制刪除kubectl delete pod -n kube-public nginx-wx-7d5458c6f5-rnhzc --force --grace-period=0#grace-period:表示過(guò)度存活期。默認(rèn)時(shí)30s。在刪除pod之前允許pod慢慢的終止其上的容器進(jìn)程。0表示立即終止pod#--force 表示強(qiáng)制

    #使用kubectl scale 進(jìn)行擴(kuò)容,縮容; --replicas=4 表示設(shè)置副本數(shù)為4 kubectl scale deployment -n kube-public nginx-wx --replicas=4#設(shè)置副本數(shù)為2 kubectl scale deployment -n kube-public nginx-wx --replicas=2

    #刪除kube-public命名空間的副本控制器 nginx-wx kubectl delete deployment -n kube-public nginx-wx

    #獲取default命名空間里的資源(如果沒(méi)有,就使用create命令創(chuàng)建一個(gè)) kubectl get all#使用logs 查看資源日志 kubectl logs nginx-deployment-86b9454474-254n2

    二: 項(xiàng)目的生命周期

    項(xiàng)目生命周期: 創(chuàng)建—> 發(fā)布------> 更新------>回滾------->刪除

    2.1 使用kubectl run 命令創(chuàng)建并允許容器鏡像

    • kubectl ? run 命令:
      • 創(chuàng)建并運(yùn)行一個(gè)或多個(gè)容器鏡像
      • 創(chuàng)建一個(gè)deployment 或 job 來(lái)管理容器
      • run 命令會(huì)在后續(xù)版本廢棄。可以使用create命令代替
      • kubectl ? run ? --help 查看命令幫助
    #啟動(dòng)nginx實(shí)例,暴露容器端口80(暴露在pod上),設(shè)置副本數(shù)3 kubectl run -n kube-public nginx --image=nginx:1.14 --port=80 --replicas=8#使用-w 選項(xiàng)動(dòng)態(tài)跟蹤 kubectl get pods -n kube-public -wkubectl get all -n kube-public

    2.2 使用kubectl expose命令發(fā)布資源

    使用kubectl ? expose命令,將資源暴露為新的service:

    使用 kubectl ? expose ? --help 獲取幫助

    kubenetes之所以需要service

    • 一方面因?yàn)閜od的ip不是固定的(pod可能會(huì)重建)
    • 另一方面則是因?yàn)橐唤Mpod實(shí)例之間總會(huì)有負(fù)載均衡的需求
    • 對(duì)于容器而言,kubeletes提供了基于VIP的網(wǎng)橋方式訪問(wèn)service ,再由service 重定向到相應(yīng)的pod

    service的類型:

    • ClusterIP:
      • 提供一個(gè)集群內(nèi)部的虛擬ip,以供pod訪問(wèn)(service的默認(rèn)類型)
    • NodePort:
      • 在每個(gè)Node上打開(kāi)一個(gè)端口以供外部訪問(wèn),kubernetes將會(huì)在每個(gè)node上打開(kāi)一個(gè)端口,并在每個(gè)node的端口都是一樣的,
      • 通過(guò)NodeIP:NodePort的方式,kubenetes集群外部的程序可以訪問(wèn)service
    • LoadBalancer:
      • 通過(guò)外部的負(fù)載均衡器來(lái)訪問(wèn),通常在云平臺(tái)部署LoadBalancer還需要額外的費(fèi)用

    2.2.1 發(fā)布

    #為deployment的nginx創(chuàng)建service,并通過(guò)service的80端口轉(zhuǎn)發(fā)至容器的80端口上,service的名稱為nginx-service,類型為NodePort kubectl expose deployment -n kube-public nginx --port=80 --target-port=80 --name=ngin-service --type=NodePort#--port 指定node在service上的端口 #--target 指定 容器在pod 上的端口 #--type 指定類型。默認(rèn)是cluster ip

    2.2.2 查看pod網(wǎng)絡(luò)信息和service暴露端口

    #查看pod網(wǎng)絡(luò)信息和service暴露端口 kubectl get pods,svc -o wide -n kube-public

    2.2.3 查看service關(guān)聯(lián)的資源

    #通過(guò)查看service資源的詳細(xì)信息里的endpoints信息查看關(guān)聯(lián)的后端節(jié)點(diǎn) kubectl describe service -n kube-public ngin-service #直接查看endpoints關(guān)聯(lián)的后端節(jié)點(diǎn) kubectl get endpoints -n kube-public

    2.2.4 在所有的node節(jié)點(diǎn)上查看負(fù)載均衡端口

    yum -y install ipvsadm ipvsadm -Ln #在所有node節(jié)點(diǎn)都可以看到ClusterIP:80的轉(zhuǎn)發(fā)(內(nèi)部訪問(wèn)) #以及可以看到對(duì)應(yīng)node節(jié)點(diǎn)ip:30754(nodeip使用的端口)的轉(zhuǎn)發(fā)(外部訪問(wèn))

    2.3 使用kubectl set 命令更新資源信息

    kubectl ?set :

    • 跟新現(xiàn)有資源的一些信息
    • kubectl ? set ? --help 獲取幫助信息

    2.3.1 獲取當(dāng)前nginx的版本號(hào)

    curl -I http://192.168.23.12:30754 curl -I http://192.168.23.13:30754

    2.3.2 將版本跟新為1.15

    #查看所有資源信息,找到deployment的資源名 kubectl get all -n kube-public#查看相應(yīng)deployment資源里的容器名 kubectl describe deployment.apps/nginx -n kube-public#使用kubectl set image ,將nginx版本升級(jí)為1.15. #nginx=nginx:1.15 表示容器nginx使用鏡像nginx:1.15 kubectl set -n kube-public image deployment.apps/nginx nginx=nginx:1.15#動(dòng)態(tài)跟蹤 kubectl get pod -n kube-public -w#如果升級(jí)失敗,可能時(shí)因?yàn)榫W(wǎng)絡(luò)問(wèn)題。可以先在node 節(jié)點(diǎn)上,將對(duì)應(yīng)的鏡像拉去下來(lái)

    curl -I http://192.168.23.12:30754 curl -I http://192.168.23.13:30754

    2.4 使用kubectl rollout 對(duì)資源進(jìn)行回滾

    kubectl ?rollout

    • 對(duì)資源進(jìn)行回滾
    • kubectl ?rollout ?--help 查看幫助文檔
    #查看歷史版本 kubectl rollout history -n kube-public deployment nginx

    #執(zhí)行回滾到上一個(gè)版本 kubectl rollout undo -n kube-public deployment nginx#檢查回滾狀態(tài)kubectl rollout status -n kube-public deployment nginx

    curl -I http://192.168.23.12:30754 curl -I http://192.168.23.13:30754

    2.5 使用kubectl delete刪除資源

    #刪除副本控制器 kubectl delete -n kube-public deployments.apps nginx#刪除service kubectl delete -n kube-public service/ngin-service

    三: 金絲雀發(fā)布(Canary Release)

    3.1 什么是金絲雀發(fā)布

    金絲雀發(fā)布,又稱灰度發(fā)布

    Deployment控制器支持自定義控制更新過(guò)程中的滾動(dòng)節(jié)奏,如"暫停(pause) "或“繼續(xù)(resume)"更新操作。比如等待第一批新的Pod資源創(chuàng)建完成后立即暫停更新過(guò)程,此時(shí),僅存在一部分新版本的應(yīng)用,主體部分還是舊的版本。

    然后,再篩選一小部分的用戶請(qǐng)求路由到新版本的Pod應(yīng)用,繼續(xù)觀察能否穩(wěn)定地按期望的方式運(yùn)行。確定沒(méi)問(wèn)題之后再繼續(xù)完成余下的Pod資源滾動(dòng)更新,否則立即回滾更新操作。這就是所謂的金絲雀發(fā)布。

    3.2 配置deployment使用金絲雀發(fā)布

    3.2.1 發(fā)布nginx服務(wù)

    #使用nginx1.14版本鏡像創(chuàng)建3個(gè)pod kubectl run -n kube-public nginx --image=nginx:1.14 --port=80 --replicas=3#發(fā)布服務(wù) kubectl expose deployment -n kube-public nginx --port=80 --target-port=80 --name=ngin-service --type=NodePort#獲取服務(wù)的pod和service 信息 kubectl get pod,svc -n kube-public#f范圍cluster ip 或者nodeip:nodeport 3次,查看nginx的版本都是1.14.2 curl -I 10.1.216.211

    3.2.1 更新deployment版本,并配置暫停deploymen

    #另開(kāi)一個(gè)master 終端,觀察 kubectl get pods -n kube-public -w#在第一個(gè)master終端將nginx升級(jí)到1.15.1 ,并配置藏聽(tīng) kubectl set image -n kube-public deployment.apps/nginx nginx=nginx:1.15 && \ kubectl rollout -n kube-public pause deployment/nginx#切換到第二個(gè)master終端查看#查看運(yùn)行的pod(此時(shí)有四個(gè)pod在運(yùn)行) kubectl get pods -n kube-public

    3.2.2 訪問(wèn)測(cè)試,查看版本號(hào)

    #訪問(wèn)cluster ip 4 次。查看nginx的版本號(hào) curl -I 10.1.216.211

    3.2.3 在確保更新的pod沒(méi)有問(wèn)題后,繼續(xù)更新

    #讓deployment 繼續(xù)更新 kubectl rollout -n kube-public resume deployment nginx#使用clusterip 訪問(wèn),查看nginx的版本號(hào) curl -I 10.1.216.211

    3.2.4 查看最后的更新情況

    #查看pod 數(shù)量。發(fā)現(xiàn)回到了3個(gè) kubectl get pods -n kube-public #訪問(wèn)3 次以上,查看版本號(hào) curl -I 10.1.216.211

    總結(jié)

    以上是生活随笔為你收集整理的kubectl 命令管理(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。