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

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

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

  命令冗長,複雜,難以記憶nginx

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

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

  1.1 查看名稱空間  查詢時,爲了不重名,須要指定名稱空間。docker

# kubectl get namespace
簡寫:
# kubectl get ns

 

 

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

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

 

  1.3 建立命名空間api

# kubectl create ns app

 

 

  1.4 刪除命名空間bash

# kubectl delete ns app

 

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

   pod控制器類型參考:http://www.javashuo.com/article/p-nbbrpeel-kx.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

 

二、聲明式-依賴統一資源配置清單(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

 

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

相關文章
相關標籤/搜索