更多精彩資訊請猛戳這裡:
kubernetes系列技術文件
kubectl命令
kubectl是kubernetes叢集的命令列工具,透過它能夠對叢集本身進行管理,並能夠在叢集上進行容器化應用的安裝部署。kubectl命令的語法如下:
kubectl [command] [type] [name] [flags]
comand
:指定要對資源執行的操作,例如create、get、delete
type
:指定資源型別,比如deployment、pod、service
name
:指定資源的名稱,名稱大小寫敏感
flags
:指定額外的可選引數
資源型別
資源分類
資源名稱
縮寫
資源作用
叢集級別資源
nodes
no
叢集組成部分
namespaces
ns
隔離Pod
pod資源
pods
po
裝載容器
pod資源控制器
replicationcontrollers
rc
控制pod資源
replicasets
rs
控制pod資源
deployments
deploy
控制pod資源
daemonsets
ds
控制pod資源
jobs
控制pod資源
cronjobs
cj
控制pod資源
horizontalpodautoscalers
hpa
控制pod資源
statefulsets
sts
控制pod資源
服務發現資源
services
svc
統一pod對外介面
ingress
ing
統一pod對外介面
儲存資源
volumeattachments
儲存
persistentvolumes
pv
儲存
persistentvolumeclaims
pvc
儲存
配置資源
configmaps
cm
配置
secrets
配置
命令
命令分類
命令
翻譯
命令作用
基本命令
create
建立
建立一個資源
edit
編輯
編輯一個資源
get
獲取
獲取一個資源
patch
更新
更新一個資源
delete
刪除
刪除一個資源
explain
解釋
展示資源文件
執行和除錯
run
執行
在叢集中執行一個指定的映象
expose
暴露
暴露資源為Service
describe
描述
顯示資源內部資訊
logs
日誌
輸出容器在 pod 中的日誌
attach
纏繞
進入執行中的容器
exec
執行
執行容器中的一個命令
cp
複製
在Pod內外複製檔案
rollout
首次展示
管理資源的釋出
scale
規模
擴(縮)容Pod的數量
autoscale
自動調整
自動調整Pod的數量
高階命令
apply
rc
透過檔案對資源進行配置
label
標籤
更新資源上的標籤
其他命令
cluster-info
叢集資訊
顯示叢集資訊
version
版本
顯示當前Server和Client的版本
資源型別——Namespce
Namespace是kubernetes系統中的一種非常重要資源,它的主要作用是用來實現
多套環境的資源隔離
或者
多租戶的資源隔離
。
更多精彩資訊請猛戳這裡:
kubernetes系列技術文件
增
# 建立namespace[root@master ~]# kubectl create ns devnamespace/dev created
刪
# 刪除namespace[root@master ~]# kubectl delete ns devnamespace “dev” deleted
查
# 1 檢視所有的ns 命令:kubectl get ns[root@master ~]# kubectl get nsNAME STATUS AGEdefault Active 45hkube-node-lease Active 45hkube-public Active 45h kube-system Active 45h # 2 檢視指定的ns 命令:kubectl get ns ns名稱[root@master ~]# kubectl get ns defaultNAME STATUS AGEdefault Active 45h# 3 指定輸出格式 命令:kubectl get ns ns名稱 -o 格式引數# kubernetes支援的格式有很多,比較常見的是wide、json、yaml[root@master ~]# kubectl get ns default -o yamlapiVersion: v1kind: Namespacemetadata: creationTimestamp: “2020-04-05T04:44:16Z” name: default resourceVersion: “151” selfLink: /api/v1/namespaces/default uid: 7405f73a-e486-43d4-9db6-145f1409f090spec: finalizers: - kubernetesstatus: phase: Active # 4 檢視ns詳情 命令:kubectl describe ns ns名稱[root@master ~]# kubectl describe ns defaultName: defaultLabels:
資源型別——Pod
Pod是kubernetes叢集進行管理的最小單元,程式要執行必須部署在容器中,而容器必須存在於Pod中。可以理解為容器的封裝,一個Pod中可以存在一個或者多個容器。
容器的生命週期
建立一個pod-nginx。yaml,內容如下:
apiVersion: v1kind: Podmetadata: name: nginx namespace: devspec: containers: - image: nginx:1。17。1 name: pod ports: - name: nginx-port containerPort: 80 protocol: TCP
然後就可以執行對應的建立和刪除命令了:
建立:kubectl create -f pod-nginx。yaml刪除:kubectl delete -f pod-nginx。yaml
配置清單詳解
apiVersion: v1 #必選,版本號,例如v1kind: Pod #必選,資源型別,例如 Podmetadata: #必選,元資料 name: string #必選,Pod名稱 namespace: string #Pod所屬的名稱空間,預設為“default” labels: #自定義標籤列表 - name: string spec: #必選,Pod中容器的詳細定義 containers: #必選,Pod中容器列表 - name: string #必選,容器名稱 image: string #必選,容器的映象名稱 imagePullPolicy: [ Always|Never|IfNotPresent ] #獲取映象的策略 command: [string] #容器的啟動命令列表,如不指定,使用打包時使用的啟動命令 args: [string] #容器的啟動命令引數列表 workingDir: string #容器的工作目錄 volumeMounts: #掛載到容器內部的儲存卷配置 - name: string #引用pod定義的共享儲存卷的名稱,需用volumes[]部分定義的的卷名 mountPath: string #儲存卷在容器內mount的絕對路徑,應少於512字元 readOnly: boolean #是否為只讀模式 ports: #需要暴露的埠庫號列表 - name: string #埠的名稱 containerPort: int #容器需要監聽的埠號 hostPort: int #容器所在主機需要監聽的埠號,預設與Container相同 protocol: string #埠協議,支援TCP和UDP,預設TCP env: #容器執行前需設定的環境變數列表 - name: string #環境變數名稱 value: string #環境變數的值 resources: #資源限制和請求的設定 limits: #資源限制的設定 cpu: string #Cpu的限制,單位為core數,將用於docker run ——cpu-shares引數 memory: string #記憶體限制,單位可以為Mib/Gib,將用於docker run ——memory引數 requests: #資源請求的設定 cpu: string #Cpu請求,容器啟動的初始可用數量 memory: string #記憶體請求,容器啟動的初始可用數量 lifecycle: #生命週期鉤子 postStart: #容器啟動後立即執行此鉤子,如果執行失敗,會根據重啟策略進行重啟 preStop: #容器終止前執行此鉤子,無論結果如何,容器都會終止 livenessProbe: #對Pod內各容器健康檢查的設定,當探測無響應幾次後將自動重啟該容器 exec: #對Pod容器內檢查方式設定為exec方式 command: [string] #exec方式需要制定的命令或指令碼 httpGet: #對Pod內個容器健康檢查方法設定為HttpGet,需要制定Path、port path: string port: number host: string scheme: string HttpHeaders: - name: string value: string tcpSocket: #對Pod內個容器健康檢查方式設定為tcpSocket方式 port: number initialDelaySeconds: 0 #容器啟動完成後首次探測的時間,單位為秒 timeoutSeconds: 0 #對容器健康檢查探測等待響應的超時時間,單位秒,預設1秒 periodSeconds: 0 #對容器監控檢查的定期探測時間設定,單位秒,預設10秒一次 successThreshold: 0 failureThreshold: 0 securityContext: privileged: false restartPolicy: [Always | Never | OnFailure] #Pod的重啟策略 nodeName:
label
label是kubernetes系統中的一個重要概念,它的作用就是在資源上新增標識,用來對它們進行區分和選擇。
命令方式
# 為pod資源打標籤[root@master ~]# kubectl label pod nginx-pod version=1。0 -n devpod/nginx-pod labeled# 為pod資源更新標籤[root@master ~]# kubectl label pod nginx-pod version=2。0 -n dev ——overwritepod/nginx-pod labeled# 檢視標籤[root@master ~]# kubectl get pod nginx-pod -n dev ——show-labelsNAME READY STATUS RESTARTS AGE LABELSnginx-pod 1/1 Running 0 10m version=2。0# 篩選標籤[root@master ~]# kubectl get pod -n dev -l version=2。0 ——show-labelsNAME READY STATUS RESTARTS AGE LABELSnginx-pod 1/1 Running 0 17m version=2。0[root@master ~]# kubectl get pod -n dev -l version!=2。0 ——show-labelsNo resources found in dev namespace。#刪除標籤[root@master ~]# kubectl label pod nginx-pod version- -n devpod/nginx-pod labeled
配置方式
apiVersion: v1kind: Podmetadata: name: nginx namespace: dev labels: version: “3。0” env: “test”spec: containers: - image: nginx:1。17。1 name: pod ports: - name: nginx-port containerPort: 80 protocol: TCP
kubectl apply -f pod-nginx。yaml
更多精彩資訊請猛戳這裡:
kubernetes系列技術文件
更多精彩資訊請猛戳這裡:
kubernetes系列技術文件
更多精彩資訊請猛戳這裡:
kubernetes系列技術文件