1. 程式人生 > 其它 >|NO.Z.00019|——————————|^^ 標準 ^^|——|KuberNetes&標準.V18|---------------------------------------------------------|常用操作.V04|更新資源|刪除資源|

|NO.Z.00019|——————————|^^ 標準 ^^|——|KuberNetes&標準.V18|---------------------------------------------------------|常用操作.V04|更新資源|刪除資源|



[CloudNative:KuberNetes&書籤.V18]                                                                      [Applications.KuberNetes] [|DevOps|kubernetes|k8s.二進位制1.20|網路規劃|常用操作|]








一、更新資源
### --- 更新資源

[root@k8s-master01 ~]#  kubectl set image deployment/frontend www=image:v2 // 滾動更新 "frontend" Deployment 的 "www" 容器映象
[root@k8s-master01 ~]#  kubectl rollout history deployment/frontend        // 檢查 Deployment 的歷史記錄,包括版本 
[root@k8s-master01 ~]#  kubectl rollout undo deployment/frontend           // 回滾到上次部署版本
[root@k8s-master01 ~]#  kubectl rollout undo deployment/frontend --to-revision=2 // 回滾到特定部署版本
[root@k8s-master01 ~]#  kubectl rollout status -w deployment/frontend      // 監視 "frontend" Deployment 的滾動升級狀態直到完成
[root@k8s-master01 ~]#  kubectl rollout restart deployment/frontend        // 輪替重啟 "frontend" Deployment

[root@k8s-master01 ~]#  cat pod.json | kubectl replace -f -                // 通過傳入到標準輸入的 JSON 來替換 Pod
~~~     # 強制替換,刪除後重建資源。會導致服務不可用。
[root@k8s-master01 ~]#  kubectl replace --force -f ./pod.json

~~~     # 為多副本的 nginx 建立服務,使用 80 埠提供服務,連線到容器的 8000 埠。
[root@k8s-master01 ~]#  kubectl expose rc nginx --port=80 --target-port=8000
~~~     # 將某單容器 Pod 的映象版本(標籤)更新到 v4

[root@k8s-master01 ~]#  kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -

[root@k8s-master01 ~]#  kubectl label pods my-pod new-label=awesome                // 新增標籤
[root@k8s-master01 ~]#  kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq // 添加註解
[root@k8s-master01 ~]#  kubectl autoscale deployment foo --min=2 --max=10          // 對 "foo" Deployment 自動伸縮容
二、部分更新資源
### --- 部分更新資源
~~~     # 部分更新某節點

[root@k8s-master01 ~]#  kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}' 
~~~     # 更新容器的映象;spec.containers[*].name 是必須的。因為它是一個合併性質的主鍵。
[root@k8s-master01 ~]#  kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'

~~~     # 使用帶位置陣列的 JSON patch 更新容器的映象
[root@k8s-master01 ~]#  kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'
~~~     # 使用帶位置陣列的 JSON patch 禁用某 Deployment 的 livenessProbe
[root@k8s-master01 ~]#  kubectl patch deployment valid-deployment  --type json   -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/livenessProbe"}]'

~~~     # 在帶位置陣列中新增元素 
[root@k8s-master01 ~]#  kubectl patch sa default --type='json' -p='[{"op": "add", "path": "/secrets/1", "value": {"name": "whatever" } }]'

三、刪除資源
### --- 刪除資源

[root@k8s-master01 ~]#   kubectl delete -f ./pod.json                 // 刪除在 pod.json 中指定的型別和名稱的 Pod
[root@k8s-master01 ~]#   kubectl delete pod,service baz foo           // 刪除名稱為 "baz" 和 "foo" 的 Pod 和服務
[root@k8s-master01 ~]#   kubectl delete pods,services -l name=myLabel // 刪除包含 name=myLabel 標籤的 pods 和服務
[root@k8s-master01 ~]#   kubectl delete pods,services -l name=myLabel --include-uninitialized // 刪除包含 label name=myLabel 標籤的 Pods 和服務
[root@k8s-master01 ~]#   kubectl -n my-ns delete po,svc --all         // 刪除在 my-ns 名字空間中全部的 Pods 和服務
### --- 刪除所有與 pattern1 或 pattern2 awk 模式匹配的 Pods

[root@k8s-master01 ~]#   kubectl get pods  -n mynamespace --no-headers=true | awk '/pattern1|pattern2/{print $1}' | xargs  kubectl delete -n mynamespace pod








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)