kubernetes進階(一) kubectl工具使用詳解


管理k8s核心資源的三種基本方法:

一、陳述式-主要依賴命令行工具  --可以滿足90%以上的使用場景,但是缺點也很明顯:

  命令冗長,復雜,難以記憶

  特定場景下,無法實現管理需求

  對資源的增、刪、查操作比較容易,改比較麻煩,需要patch來使用json串來更改。

  1.1 查看名稱空間  查詢時,為了避免重名,需要指定名稱空間。

# kubectl get namespace
簡寫:
# kubectl get ns

 

 

  1.2 查詢命名空間中的資源,使用-n 指定命名空間

# kubectl get all -n default
# kubectl get pods -n default
# kubectl get nodes -n default

 

  1.3 創建命名空間

# kubectl create ns app

 

 

  1.4 刪除命名空間

# kubectl delete ns app

 

   1.5 創建一個deployment類型的pod控制器:PS:1.16版本以后,控制器有變化,具體變化參考k8s官網。

   pod控制器類型參考:https://www.cnblogs.com/weiyiming007/p/10246118.html

# kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public
# kubectl get deploy -n kube-public

 

 

 

  1.6 查看pod控制器或者pod概覽信息 : -o wide

# kubectl get deploy -o wide -n kube-public
# kubectl get pod -o wide -n kube-public

 

 

 

  1.7 查看pod控制器、pod、service等資源的詳細信息:describe

# kubectl describe deploy nginx-dp -n kube-public
# kubectl describe pod nginx-dp-5dfc689474-4bhfh -n kube-public
# kubectl describe svc nginx-dp -n kube-public 

 詳細信息太多,就不截圖了。

 

  1.8 進入pod容器,用法和docker exec一致,但是需要使用-n 指定命名空間

# kubectl exec -ti nginx-dp-5dfc689474-4bhfh /bin/bash -n kube-public

 

 

 

  1.9 刪除pod容器,此刪除,只是刪除了pod容器,並沒有刪除pod控制器,所以此操作相當於刪除pod后,pod控制器在拉起一個新的pod。

# kubectl delete pods nginx-dp-5dfc689474-4bhfh -n kube-public

 

 

 可以看到我們刪除pod以后,pod控制器又幫我們從新拉起了一個新的pod,想要完全刪除,需要刪除pod控制器。

 

  1.10 刪除pod控制器

# kubectl delete deploy nginx-dp -n kube-public

 

可以看到,當我們刪除了pod控制器以后,pod容器也隨之被刪除了。

 

  1.11 擴容pod  --replicas=數量

# kubectl scale deployment nginx-dp --replicas=2 -n kube-public

 

 

 

 

 

  1.12 管理service資源 service資源:為pod資源提供穩定的接入點

# kubectl create deploy nginx-dp --image=harbor.od.com/public/nginx:v1.7.9
# kubectl expose deploy nginx-dp --port=80 -n kube-public

 

 看到我們已經創建了一個service資源,可以通過192.168.234.234的80,訪問到后面pod,為了解決pod漂移導致IP變化的問題。

可以使用ipvsadm -Ln來查看:nq為ipvs調度算法中的一種,其他調度算法請自行查閱。

 

 

我們通過刪除pod的方式,讓pod漂移到另一台node節點,再來查看一下:

 

 可以看到,雖然pod漂移了,但是service資源提供的接入點是不變的,這得益於ipvs的強大。

 

 

 

 

   1.13 查看資源配置清單詳細信息:-o yaml

# kubectl get pod nginx-dp-5dfc689474-c5r9r -o yaml -n kube-public
# kubectl get deploy nginx-dp -o yaml -n kube-public
# kubectl get svc -o yaml -n kube-public

 

  1.14 查看屬性的定義及用法:例:查看service資源下metadata的定義及用法

# kubectl explain service.metadata

 

2、聲明式-依賴統一資源配置清單(manifest) yaml/json

  2.1 創建一個svc資源配置清單

# vi nginx-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-ds
  name: nginx-ds
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx-ds
  sessionAffinity: None
  type: ClusterIP
# kubectl create -f nginx-ds-svc.yaml

 

 

# kubectl get svc nginx-ds -o yaml -n default

 

   2.2 離線修改資源配置清單:

  修改資源配置清單后可以使用apply應用。

這里增加一個知識點,就是kube-apiserver這個服務當中,有一個限制端口范圍的參數:--service-node-port-range 10-29999,這個參數在使用apply修改資源配置清單的時候,會有作用

如果修改后的資源配置清單中的port不在這個范圍,會報錯,修改這個以后,重啟kube-apiserver即可。

# vi nginx-ds-svc.yaml #將對外暴露的端口改為881
# kubectl apply -f nginx-ds-svc.yaml

可以看到端口從80變成了881

 

 

 修改資源配置清單分為在線修改和離線修改(推薦離線修改):

  2.3 在線修改:我這里使用在線修改,將端口修改為888

# kubectl edit svc nginx-ds -n default

 

   2.4 刪除資源:

    2.4.1 陳述式:

# kubectl delete svc nginx-ds -n default

    2.4.2 聲明式:

# kubectl delete -f nginx-ds-svc.yaml

 

3、GUI式-主要依賴圖形化操作界面(web界面)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM