上海閔行做網(wǎng)站優(yōu)化網(wǎng)站廣告優(yōu)化
Kubectl 命令詳解|K8S資源對象管理|K8S集群管理
- kubectl管理命令
- kubectl get 查詢資源
- 常用的排錯命令
- kubectl run 創(chuàng)建容器
- POD原理
- pod的生命周期
- k8s資源對象管理
- 資源文件
- 使用資源文件管理對象
- Pod資源文件
- deploy資源文件
- 集群調(diào)度的規(guī)則
- 擴容與縮減
- 集群更新與回滾
- 集群調(diào)度
kubectl管理命令
是用于控制k8s集群的命令行工具
語法格式:
kubectl [command] [TYPE] [NAME] [flags]command : 子命令 如create get describe delete TYPE: 資源類型,可以表示為單數(shù)、復數(shù)或縮寫形式name: 資源的名稱,如果省略,則顯示所有資源信息flags: 指定可選標志 或附加的參數(shù)
kubectl get 查詢資源
- get nodes 查詢節(jié)點狀態(tài)
- get deployment 查詢資源名稱
- get componentstatuses 組鍵的狀態(tài)
這個名稱空間相當于每個盤 pod相當于目錄
常用的排錯命令
- kubectl describe 資源類型 資源名稱
- 查看資源信息信息
- kubectl logs 容器名稱
- 查看console 終端的輸出信息
- 為空是正?,F(xiàn)象 表示沒有日志輸出
kubectl run 創(chuàng)建容器
kubectl run 資源名稱 -i -t --image=私有倉庫鏡像名稱:標簽
POD原理
pod的生命周期
無限運行周期 有限運行周期
– 選項終止符號
rm -rf – -f
刪除得從上往下刪除
通過資源文件的創(chuàng)建的容器 也可以通過資源文件的方式刪除
k8s資源對象管理
資源文件
k8s通過RC/RS管理POD,在RC中定義了如何啟動POD,如何運行,啟用幾副本等功能,如果我們創(chuàng)建的文件,在其中使用yaml的語法格式描述了上面的信息,這個文件就是我們的資源對象文件
資源對象文件有什么用?
- 可以創(chuàng)建、刪除、管理資源對象
- 很多高級的復雜的功能靠簡單的命令方式無法實現(xiàn),這些都需要使用資源文件描述
使用資源文件管理對象
- create 創(chuàng)建資源對象
- apply 聲明更新資源對象 可以多次執(zhí)行
- delete 刪除資源對象
kubectl (apply|create|delete) -f 資源文件
Pod資源文件
deploy資源文件
集群調(diào)度的規(guī)則
擴容與縮減
[root@master ~]# kubectl get deployments.apps
[root@master ~]# kubectl scale deployment myapache --replicas=3 # 增加3個myapache
[root@master ~]# kubectl get deployments.apps
集群更新與回滾
[root@master config]# kubectl rollout history deployment myapache
[root@master ~]# curl http://10.244.3.5
this is apache
[root@master ~]# kubectl edit deployments.apps myapache 修改配置文件鏡像為nginx
[root@master ~]# curl http://10.244.2.6
this is nginx
[root@master ~]# kubectl rollout history deployment myapache
# 回滾版本到1
[root@master ~]# kubectl rollout undo deployment myapache --to-revision=1
[root@master ~]# curl http://10.244.3.6
this is apache
集群調(diào)度
容器創(chuàng)建是隨機的,如何選擇固定的宿主機?
使用nodeName標簽根據(jù)節(jié)點名稱選擇宿主機
spec: # POD.SPEC標簽nodeName:node-0001 # 直接指定node主機名稱 ,簡單粗暴
# 注意 如果添加了選擇標簽 但無法使用該主機 pod將一直處于Pending狀態(tài)
如何使用一類宿主機?
- 需要提前為目標主機打上特定的標簽(可以是多臺)
- 在資源文件中根據(jù)標簽選擇宿主機(更加靈活)
spec: # POD.SPEC標簽nodeSelector: # 標簽選擇disktype:ssd # node 表情
打標簽的格式
刪除標簽
kubectl label pod myapache-7b689bf8f-5sczz key-
基于標簽的調(diào)度
[root@master ~]# kubectl label nodes node-0002 node-0003 disktype=ssd
node/node-0002 labeled
node/node-0003 labeled
[root@master ~]# vim myhttpd.yaml
---
kind: Pod
apiVersion: v1
metadata:name: myhttpdlabels:app: apache
spec:terminationGracePeriodSeconds: 0restartPolicy: AlwaysnodeSelector: # 修改后的disktype: ssd # 修改后的containers:- name: apacheimage: myos:httpdimagePullPolicy: IfNotPresentports:- protocol: TCPcontainerPort: 80[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
myhttpd 1/1 Running 0 29m 10.244.3.80 node-0003
web1 1/1 Running 0 10s 10.244.2.60 node-0002
web2 1/1 Running 0 10s 10.244.3.82 node-0003
web3 1/1 Running 0 10s 10.244.2.61 node-0002
web4 1/1 Running 0 10s 10.244.2.62 node-0002
web5 1/1 Running 0 10s 10.244.3.81 node-0003
[root@master ~]# kubectl label nodes node-0002 node-0003 disktype- # 標簽還原