Kubernetes集羣----kubectl管理
前言: Kubectl 是管理k8s集羣的命令行工具,通過生成的 json 格式傳遞給 apiserver 進行創建、查看、管理的操作 。
一:kubectl語法格式
1、幫助信息
kubectl --help
2、創建
kubectl run 命令
常用語法:
kubectl run NAME --image=image [--env="key=value"參數] [--port=port端口] [--replicas=replicas副本集] [--dry-run=bool狀態] [--overrides=inline-json] [--command命令] -- [COMMAND] [args...] [options]`
例:
創建一個名字爲nginx-deployment 的資源Pod,鏡像是nginx,端口是80,有三個副本數量。
[root@master01 ~]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3
[root@master01 ~]# kubectl get pods ‘查看剛創建的Pod資源’
查看3個副本所在的node節點
[root@master01 ~]# kubectl get pods -o wide
3、查看default空間內的所有資源
[root@master01 ~]# kubectl get all ‘可看到副本數、控制器數都是3個’
4、刪除pod資源nginx-deployment
[root@master01 ~]# kubectl delete deploy/nginx-deployment
[root@master01 ~]# kubectl delete deploy/nginx
[root@master01 ~]# kubectl get pods ‘全部被刪除了’
No resources found.
二:項目週期
創建 —>發佈 —>更新 —>回滾 —>刪除
(在master01上配置
)
1、創建nginx的Pod資源
[root@master01 ~]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3
[root@master01 ~]# kubectl get pods,deployment,replicaset
NAME READY STATUS RESTARTS AGE
pod/nginx-7697996758-fgs9m 1/1 Running 0 7m36s
pod/nginx-7697996758-jqhqx 1/1 Running 0 7m36s
pod/nginx-7697996758-tt59h 1/1 Running 0 7m36s
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.extensions/nginx 3 3 3 3 7m36s
NAME DESIRED CURRENT READY AGE
replicaset.extensions/nginx-7697996758 3 3 3 7m36s
2、發佈nginx service負載均衡的功能
[root@master01 ~]# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort
[root@master01 ~]# kubectl get service
‘46971 : NodePort對外提供的端口’
[root@master01 ~]# kubectl get pods -o wide ‘查看網絡狀態信息’
[root@master01 ~]# kubectl get endpoints
- kubernetes裏kube-proxy支持三種模式,在v1.8之前使用的是iptables 以及 userspace兩種模式,在kubernetes 1.8之後引入了ipvs模式。node節點可安裝 ipvsadm工具,用於查看負載均衡的服務端口 。
(在node01、node02節點上
)
3、安裝ipvsadm ,並查看
[root@node01 ~]# yum install ipvsadm -y
[root@node01 ~]# ipvsadm -L -n
4、在master01節點查看pod資源日誌
[root@master01 ~]# kubectl get pods
[root@master01 ~]# kubectl logs nginx-7697996758-fgs9m
[root@master01 ~]# kubectl logs nginx-7697996758-jqhqx
[root@master01 ~]# kubectl logs nginx-7697996758-tt59h
5、用瀏覽器訪問pod資源,再查看對應日誌信息
[root@master01 ~]# kubectl logs nginx-7697996758-fgs9m ‘再次訪問就可看到對應的日誌信息了’
6、更新nginx版本
更新版本爲1.14版本
打開谷歌瀏覽器,點擊右上角三個點—選擇更多工具—點擊開發者選項—>找到network—>刷新訪問 —>找到headers頭部信息,就可以看到nginx版本信息。
(在master01節點
)
7、 通過set命令獲取更新的修改模板
[root@master01 ~]# kubectl set --help
8、更改nginx爲1.14版本
[root@master01 ~]# kubectl set image deployment/nginx nginx=nginx:1.14 ‘更新nginx爲1.14版本’
[root@master01 ~]# kubectl get pods -w ‘-w :開啓動態監聽狀態’
‘ctrl+c結束進程’
9、回滾nginx
如業務更新完,大量用戶訪問出現error問題,那麼就要業務回滾到原來的版本。
[root@master01 ~]# kubectl rollout history deployment/nginx ‘查看歷史版本,有兩個版本狀態’
[root@master01 ~]# kubectl rollout undo deployment/nginx ‘執行回滾到上一次版本’
[root@master01 ~]# kubectl rollout status deployment/nginx ‘檢查回滾狀態’
[root@master01 ~]# kubectl rollout history deployment/nginx ‘再次查看版本狀態’
在瀏覽器中刷新下 查看版本
10、刪除業務
[root@master01 ~]# kubectl get deployment ‘查看deployment資源名稱’
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx 3 3 3 3 3h19m
[root@master01 ~]# kubectl delete deployment/nginx ‘刪除nginx項目的deployment資源’
deployment.extensions "nginx" deleted
[root@master01 ~]# kubectl get deployment
No resources found. ‘刪除完成’
[root@master01 ~]# kubectl get svc ‘查看service資源名稱’
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 22h
nginx-service NodePort 10.0.0.100 <none> 80:46971/TCP 3h12m
[root@master01 ~]# kubectl delete svc/nginx-service ‘刪除nginx項目的service資源’
service "nginx-service" deleted
11、查看具體資源的詳細信息
[root@master01 ~]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3
[root@master01 ~]# kubectl get pods
[root@master01 ~]# kubectl describe pod nginx-7697996758-l8xnw
12、查看deployment資源
[root@master01 ~]# kubectl describe deployment/nginx
13、進入pod
[root@master01 ~]# kubectl exec -it nginx-7697996758-p7c7h bash
root@nginx-7697996758-p7c7h:/#