管理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界面)