一、陳述式管理
1.1、陳述式資源管理方法
- kubernetes 集群管理集群資源的唯一入口是通過相應的方法調用 apiserver 的接口
- kubectl 是官方的 CLI 命令行工具,用于與 apiserver 進行通信,將用戶在命令行輸入的命令,組織并轉化為apiserver 能識別的信息,進而實現管理 k8s 各種資源的一種有效途徑
- kubectl 的命令大全
- kubectl --help
-
k8s官方中文文檔:http://docs.kubernetes.org.cn/683.html
- 對資源的增、刪、查操作比較容易,但對改的操作就不容易了
二、K8S相關信息查看
2.1 查看版本信息
kubectl version
2.2 查看節點信息
kubectl get nodes
2.3 查看資料對象簡寫
kubectl api-resources
2.4?查看集群信息
kubectl cluster-info
2.5?配置kubectl自動補全
source <(kubectl completion bash)
可通過TAB鍵實現命令補全,建議將其寫入 /etc/profile或是~/.bashrc
2.6 查看日志
journalctl -u kubelet -f
三、 查看基本信息
##命令格式:
kubectl get [-o wide|json|yaml] [-n namespace]
獲取資源的相關信息,-n指定命名空間,-o指定輸出格式
resource可以是具體資源名稱,如"pod nhinx-xxx";也可以是資源類型,如“pod,node,svc,deploy”多種資源使用逗號間隔;或者all(僅展示幾種核心資源,并不完整)
- –all-namespaces或-A:表示顯示所有命名空間
- –show-labels:顯示所有標簽
- -l app:僅顯示標簽為app的資源
- -l app=nginx:僅顯示包含app標簽,且值為nginx的資源
3.1、 查看master節點狀態
kubectl get componentstatuses#componentstatues可以縮寫成cs
kubectl get cs
3.2、 查看命名空間
kubectl get namespace#namespace可以縮寫成ns
kubectl get ns
獲取所有命名空間中的 Pod 列表
kubectl get pod --all-namespaces kubectl get pod -A#獲取所有命名空間中的 Pod 列表
3.3、 查看default命名空間的所有資源
kubectl get all [-n default]
由于deafult為缺省空間,當不指定命名空間時默認查看default命名空間
3.4、創建命名空間
kubectl create ns lyhdb
kubectl get ns
同一命名空間不能有相同的名字,不同命名空間可以有相同的名字
3.5、刪除命名空間
kubectl delete namespaces lyhdb
kubectl get ns
可以刪除,但是如果這個命名空間下面有資源,資源就都會被刪除,再三考慮哦
3.6、在命名空間kube-public 創建副本控制器(deployment)來啟動Pod(nginx-ab)
kubectl create deployment nginx-ab --image=nginx -n kube-public#這個命令 kubectl create deployment nginx-ab --image=nginx -n kube-public 用于在命名空間 kube-public 中創建一個名為 nginx-ab 的 Deployment,并使用 nginx 鏡像作為 Deployment 中的容器。kubectl:Kubernetes 命令行工具,用于與 Kubernetes 集群進行交互。
create deployment nginx-ab:創建一個名為 nginx-ab 的 Deployment。
--image=nginx:指定 Deployment 中要使用的容器鏡像為 nginx。
-n kube-public:指定要將 Deployment 創建在 kube-public 命名空間中。
kubectl create <pod控制器名> <pod名稱> --image=鏡像名
? ? ? ? ? ? ? ? ? ? ? ? ? Deployment:無狀態應用部署
? ? ? ? ? ? ? ? ? ? ? ? ? Statefulset:有狀態應用部署
? ? ? ? ? ? ? ? ? ? ? ? ? Replicaset:副本數量控制器
? ? ? ? ? ? ? ? ? ? ? ? ? Daemonset:確保所有節點運行同一類 Pod
? ? ? ? ? ? ? ? ? ? ? ? ? Cronjob:計劃性任務
示例二
用kubectl create 創建
用于創建deployment 控制器管理的pod
?用run直接創建
run:用于創建一個自主式/靜態 Pod
[root@master01 ~]#kubectl run qqq --image=nginx -n kube-public ##創建qqq
[root@master01 ~]#kubectl get pod -n kube-public
[root@master01 ~]#kubectl delete pod qqq -n kube-public ##刪除qqq
[root@master01 ~]#kubectl get pod -n kube-public
3.7、描述某個資源的詳細信息
kubectl describe deployment nginx-ab -n kube-publickubectl describe pod nginx-aa-66b8d4497f-cdj44 -n kube-public
3.8、查看命名空間kube-public中的pod信息
kubectl get pods -n kube-public
3.9、kubectl exec可以跨主機登錄容器,docker exec 只能在容器所在主機上登錄
[root@master01 ~]#kubectl exec -it nginx-ab-5f7467856-69mtq bash -n kube-public
示例二
[root@master01 ~]#kubectl get pods -n kube-public [root@master01 ~]#kubectl exec -it nginx-abc-64d49d89f5-lf8vc bash -n kube-public
kubectl get pods -n kube-public -owide#用于獲取在 kube-public 命名空間中運行的所有 Pods 的詳細信息,包括它們的名稱、狀態、IP 地址等。 -n kube-public 參數指定了命名空間為 kube-public,而 -owide 參數指定了輸出的格式為 wide,這樣可以顯示更多的列。#將會列出在 kube-public 命名空間中運行的所有 Pods,并顯示它們的詳細信息。
3.10、刪除(重啟)pod資源,由于存在deployment/rc之類的副本控制器,刪除pod也會重新拉起來
kubectl delete pod nginx-ab-5f7467856-69mtq -n kube-public
若pod無法刪除,總是處于terminate狀態,則要強行刪除pod
kubectl delete pod <pod-name> -n <namespace> --force --grace-period=0
#grace-period表示過渡存活期,默認30s,在刪除pod之前允許POD慢慢終止其上的容器進程,從而優雅退出,0表示立即終止pod
3.11、擴縮容
?kubectl scale deployment nginx-bb --replicas=5 -n kube-public # 擴容kubectl scale deployment nginx-bb --replicas=2 -n kube-public # 縮容kubectl scale pod控制器類型 資源名稱 --replicas=副本數 -n 命名空間
##副本數決定擴容還是縮容
3.11.1 擴容
kubectl create deployment nginx-qw --image=nginx -n kube-public
kubectl get pods -n kube-public
kubectl scale deployment nginx-qw --replicas=5 -n kube-public ##擴容5個副本
3.11.2縮容
##在擴容的基礎上進行縮容
kubectl scale deployment nginx-qw --replicas=2 -n kube-public
3.12、刪除副本控制器
kubectl get pods -n kube-public
kubectl delete deployments nginx-qw -n kube-public
kubectl get pods -n kube-public
kubectl delete deployment/nginx-ab -n kube-public
kubectl delete deployment/nginx-abc -n kube-public
kubectl delete deployment/abc -n kube-public
kubectl get pods -n kube-public
3.13、查看標簽
kubectl get pod --show-labels #查看所有資源的標簽
kubectl get pod -l app #指定標簽的鍵查看,只顯示標簽為app的資源
kubectl get pod -l app -A
kubectl get pod -l app=nginx-deployment #顯示包含app標簽且值為nginx的資源
kubectl get pod -l app=nginx-deployment
kubectl get pod -l app=nginx-deployment -A