Kubernetes——kubectl管理


Kubectl是管理K8S集羣的命令行工具,通過生成的json格式傳遞給apiserver進行創建、查看、管理的操作。

一、常用命令

#幫助信息:kubectl --help

具體列表就不一一列出了,僅列出常用的幾條命令

命令 用途
create 創建資源
expose 把資源提供出去被外部直接訪問
run 在集羣中運行一個指定的鏡像
set 爲對象設置一個指定的特徵
get 顯示
edit 編輯某一個資源
delete 刪除
rollout 回滾(更新了一個資源,出現了問題或不兼容,所以需要還原回原本的狀態,執行回滾)
scale 創建多個副本
autoscale 自動調整副本數量
certificate 修改 certificate 資源(證書授權時使用)
cluster-info 顯示集羣信息
logs 輸出容器在pod中的日誌
describe 查看指定信息
exec 進入資源
cp 複製

1、run創建

kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command] --[COMMAND] [args…] [options]

NAME:資源名稱
--image=:指向鏡像
--env=:指定參數,變量
--port=:指定端口
--replicas:指定副本集數量
--dry-run=:試運行
--overrides=:是否在線
--command:參數指令

示例:

多副本有效的創建

#創建資源名稱nginx-deployment,鏡像nginx,端口80,副本集3個

[root@master01 dashboard]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3

2、get查看

① kubectl get pods:查看pods資源

使用kubectl get pods -w可以自動去監控創建的狀態

[root@master01 dashboard]# kubectl get pods

② kubectl get pods -o wide:查看資源詳細狀態及所在節點

[root@master01 dashboard]# kubectl get pods -o wide

在這裏插入圖片描述

③ kubectl get all :查看全部資源信息,包括service的資源信息(提供對外資源),deployment控制器的資源,replicaset副本集資源

[root@master01 dashboard]# kubectl get all

pod資源的創建會伴隨着控制器資源及副本集資源的創建
在這裏插入圖片描述

3、describle查看

可以查看某個資源的信息

[root@master01 ~]# kubectl describe pod nginx-deployment-5477945587-7dc92

在這裏插入圖片描述

另外,再查看資源詳細信息下面的events裏面,相當於是一個日誌記錄
在這裏插入圖片描述

4、exec進入pod

#與進入docker容器類似,使用exec進入資源的bash環境

[root@master01 ~]# kubectl exec -it nginx-deployment-5477945587-7dc92 bash

在這裏插入圖片描述

5、delete刪除

#刪除單個的pod

[root@master01 dashboard]# kubectl delete deploy/nginx

在這裏插入圖片描述

#刪除多個pods資源

[root@master01 dashboard]# kubectl delete deploy/nginx-deployment

在這裏插入圖片描述

二、項目週期(演示)

#項目的完整的生命週期:創建——發佈——更新——回滾——刪除

1、創建nginx

#創建nginx資源,名字nginx,鏡像nginx最新鏡像,端口80,3個副本集

[root@master01 dashboard]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3
[root@master01 dashboard]# kubectl get pods

在這裏插入圖片描述

#查看pods資源,deployment控制器資源,replicaset副本集資源

 [root@master01 dashboard]# kubectl get pods,deployment,replicaset

在這裏插入圖片描述

2、發佈nginx service(提供負載均衡的功能)

kubectl expose (-f FILENAME | TYPE NAME) [–port=port] [–protocol=TCP | UDP |SCTP] [–target-port=number-or-name] [–name=name] [–external-ip=external-ip-of-service] [–type=type] [options]

expose:發佈
-f:指定文件
--port:對外提供的端口
-target-port:目標端口
-name:資源名稱

① 發佈

  • –type類型:NodePort形式對外提供服務
[root@master01 dashboard]# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

② 查看service資源

[root@master01 dashboard]# kubectl get service

在這裏插入圖片描述

類型是NodePort,所以使用nodeIP(任何節點)加上外部端口進行訪問

kube-porxy提供了負載均衡,所以不管訪問哪個節點都可以訪問到裏面的資源

③ 驗證負載均衡功能

kubernetes裏kube-porxy支持三種模式,在v1.8之前我們使用的是iptables以及userspace兩種模式,在v1.8之後引入了ipvs模式

在node01操作,查看負載均衡端口

#下載管理ipvs的工具

[root@node01 ~]# yum install ipvsadm -y

#查看ipvs負載均衡

[root@node01 ~]# ipvsadm -L -n

在這裏插入圖片描述
在這裏插入圖片描述

可以看到,兩個node節點都做了負載均衡,不管訪問哪個node節點加上對應的端口,都可以訪問到3個副本集服務資源

#訪問驗證

訪問前先看下日誌記錄,三個資源都還沒有訪問記錄
在這裏插入圖片描述

這時進行訪問,兩個nodeIP均嘗試下訪問
在這裏插入圖片描述
在這裏插入圖片描述

可以看到兩個node均可以訪問,現在我們再看下每個資源的日誌情況
在這裏插入圖片描述

③ 查看pods資源網絡狀態詳細信息

[root@master01 dashboard]# kubectl get pods -o wide

④ 查看關聯後端的節點

[root@master01 dashboard]# kubectl get endpoints

在這裏插入圖片描述

⑤ 查看資源對象簡寫

[root@master01 dashboard]# kubectl api-resources

在這裏插入圖片描述

3、更新版本

① 查看當前版本號

進入網頁——開發者工具——Network——找到訪問的記錄——Header——找到Server看到當前版本
在這裏插入圖片描述

② 變更版本爲1.14

#獲取修改模板

[root@master01 ~]# kubectl set image --help
 kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1

#按照模板變更

[root@master01 ~]# kubectl set image deployment/nginx nginx=nginx:1.14

#動態監聽顯示狀態

[root@master01 ~]# kubectl get pods -w

在這裏插入圖片描述在這裏插入圖片描述
原本的三個資源沒有了,出現了三個新的資源
結論:
1.容器是不可以被重啓的,要想實現更新操作,是需要刪掉重新創建的(等同於重啓)。總而言之:容器只能被刪除,然後再創建。

2.更新的過程是逐步進行的,在一個新的資源創建好以後纔會準備刪除一箇舊的資源。而由於3副本集的原因,可運行的資源始終有3個。並且replicaset副本集也會進行更新
在這裏插入圖片描述

③ 驗證版本更新

重新訪問發現版本號已由原nginx/1.17.10變更爲nginx/1.14.2
在這裏插入圖片描述

4、回滾

假設版本更新後有bug,需要還原爲之前的版本,執行回滾(業務不會停止)

[root@master01 ~]# kubectl rollout --help
  • history 顯示 rollout 歷史
  • pause 標記提供的 resource 爲中止狀態
  • resume 繼續一個停止的 resource
  • status 顯示 rollout 的狀態
  • undo 撤銷上一次的 rollout

① 查看歷史版本

[root@master01 ~]# kubectl rollout history deployment/nginx

在這裏插入圖片描述
② 執行回滾

會回滾到上一個狀態

[root@master01 ~]# kubectl rollout undo deployment/nginx

③ 檢查回滾狀態

[root@master01 ~]# kubectl rollout status deployment/nginx

在這裏插入圖片描述

#再次檢查history歷史狀態,會發現狀態又疊加了
在這裏插入圖片描述

④ 再次驗證當前版本,會發現發現版本號已經又變回原本的nginx/1.17.10版本

建議瀏覽器清空歷史記錄後訪問,否則會有緩存
在這裏插入圖片描述

5、刪除nginx

① 查看deployment

[root@master01 ~]# kubectl get deployment

在這裏插入圖片描述

② 刪除(刪除時,pod資源,控制器資源及副本集資源會一起刪除,但是提供服務的service資源不會刪除)

[root@master01 ~]# kubectl delete deployment/nginx

在這裏插入圖片描述

③ 刪除service資源

[root@master01 ~]# kubectl delete service/nginx-service

在這裏插入圖片描述
在這裏插入圖片描述
這樣纔算是徹底刪除nginx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章