天天看點

kubectl 指令集合

k8s的實作核心實際上就是通過讀寫etcd資料庫實作對資源的存儲,管理和控制。

k8s所有資源的本源都是存儲在etcd中的一個個鍵值對。

理論上可以觀察到etcd資料庫中的資料變化。具體的使用方式如下:

用$K8SPATH/hack/local-up-cluster.sh啟動一個k8s服務。這個可執行腳本中的68行定義了etcd的版本,預設是etcd3,可以修改為etcd2。

這個版本很重要,因為etcd3和etcd2是完全不同的兩個東西,兩者完全不相容。

etcdctl工具是一個可以對etcd資料進行管理的指令行工具,這個工具在兩個不同的etcd版本下的行為方式也完全不同。

export ETCDCTL_API=2

export ETCDCTL_API=3

以上兩個語句分别将etcdctl通路的etcd版本調整為2或者3,下面分别說明兩種不同的版本如何分别進行資料的通路。

etcd2

在etcd2的情況下,對etcd資料的通路如下:

etcdctl ls

可以逐級顯示其目前的存儲目錄,直至到key-value

etcd3

etcdctl get / --prefix --keys-only

這條指令的意思是擷取etcd中存儲的所有key,并且字首為 ‘/’,其結果類似于:

/registry/apiregistration.k8s.io/apiservices/v1.

/registry/apiregistration.k8s.io/apiservices/v1.authentication.k8s.io

對其中一個特定的鍵進行通路可以用一下方式進行:

etcdctl get /registry/apiregistration.k8s.io/apiservices/v1.

kubectl

source <(kubectl completion bash) #指令補全

啟動-狀态

  1. master

  2. systemctl daemon-reload

  3. systemctl start kube-apiserver

  4. systemctl start kube-controller-manager

  5. systemctl start kube-scheduler

  6. etcd

  7. systemctl start etcd.service

  8. client

  9. systemctl start kube-proxy -l

  10. systemctl start docker -l

  11. systemctl start kubelet -l

  12. status

  13. systemctl status etcd.service

  14. systemctl status kube-apiserver -l

  15. systemctl status kube-controller-manager -l

  16. systemctl status kube-scheduler

  17. systemctl status kube-proxy -l

  18. systemctl status docker -l

  19. systemctl status kubelet -l

常用指令

  1. kubectl get pods

  2. kubectl get rc

  3. kubectl get service

  4. kubectl get componentstatuses

  5. kubectl get endpoints

  6. kubectl cluster-info

  7. kubectl create -f redis-master-controller.yaml

  8. kubectl delete-f redis-master-controller.yaml

  9. kubectl delete pod nginx-772ai

  10. kubectl logs -f pods/heapster-xxxxx -n kube-system #檢視日志

  11. kubectl scale rc redis-slave --replicas=3#修改RC的副本數量,來實作Pod的動态縮放

  12. etcdctl cluster-health #檢查網絡叢集健康狀态

  13. etcdctl --endpoints=https://192.168.71.221:2379 cluster-health #帶有安全認證檢查網絡叢集健康狀态

  14. etcdctl member list

  15. etcdctl set/k8s/network/config '{ "Network": "10.1.0.0/16" }'

  16. etcdctl get/k8s/network/config

基礎進階

  1. kubectl get services kubernetes-dashboard -n kube-system #檢視所有service

  2. kubectl get deployment kubernetes-dashboard -n kube-system #檢視所有釋出

  3. kubectl get pods --all-namespaces #檢視所有pod

  4. kubectl get pods -o wide --all-namespaces #檢視所有pod的IP及節點

  5. kubectl get pods -n kube-system | grep dashboard

  6. kubectl describe service/kubernetes-dashboard --namespace="kube-system"

  7. kubectl describe pods/kubernetes-dashboard-349859023-g6q8c --namespace="kube-system"#指定類型檢視

  8. kubectl describe pod nginx-772ai#檢視pod詳細資訊

  9. kubectl scale rc nginx --replicas=5# 動态伸縮

  10. kubectl scale deployment redis-slave --replicas=5#動态伸縮

  11. kubectl scale --replicas=2-f redis-slave-deployment.yaml #動态伸縮

  12. kubectl exec-it redis-master-1033017107-q47hh /bin/bash #進入容器

  13. kubectl label nodes node1 zone=north #增加節點lable值 spec.nodeSelector: zone: north #指定pod在哪個節點

  14. kubectl get nodes -lzone #擷取zone的節點

  15. kubectl label pod redis-master-1033017107-q47hh role=master #增加lable值 [key]=[value]

  16. kubectl label pod redis-master-1033017107-q47hh role-#删除lable值

  17. kubectl label pod redis-master-1033017107-q47hh role=backend --overwrite #修改lable值

  18. kubectl rolling-update redis-master -f redis-master-controller-v2.yaml #配置檔案滾動更新

  19. kubectl rolling-update redis-master --image=redis-master:2.0#指令更新

  20. kubectl rolling-update redis-master --image=redis-master:1.0--rollback #pod版本復原

繼續閱讀