K8S系列第七篇(Pod、kubectl命令、labels)

更多精彩資訊請猛戳這裡:

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系統中的一種非常重要資源,它的主要作用是用來實現

多套環境的資源隔離

或者

多租戶的資源隔離

K8S系列第七篇(Pod、kubectl命令、labels)

更多精彩資訊請猛戳這裡:

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: Annotations: Status: Active # Active 名稱空間正在使用中 Terminating 正在刪除名稱空間# ResourceQuota 針對namespace做的資源限制# LimitRange針對namespace中的每個元件做的資源限制No resource quota。No LimitRange resource。

資源型別——Pod

Pod是kubernetes叢集進行管理的最小單元,程式要執行必須部署在容器中,而容器必須存在於Pod中。可以理解為容器的封裝,一個Pod中可以存在一個或者多個容器。

容器的生命週期

K8S系列第七篇(Pod、kubectl命令、labels)

建立一個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: #設定NodeName表示將該Pod排程到指定到名稱的node節點上 nodeSelector: obeject #設定NodeSelector表示將該Pod排程到包含這個label的node上 imagePullSecrets: #Pull映象時使用的secret名稱,以key:secretkey格式指定 - name: string hostNetwork: false #是否使用主機網路模式,預設為false,如果設定為true,表示使用宿主機網路 volumes: #在該pod上定義共享儲存卷列表 - name: string #共享儲存卷名稱 (volumes型別有很多種) emptyDir: {} #型別為emtyDir的儲存卷,與Pod同生命週期的一個臨時目錄。為空值 hostPath: string #型別為hostPath的儲存卷,表示掛載Pod所在宿主機的目錄 path: string #Pod所在宿主機的目錄,將被用於同期中mount的目錄 secret: #型別為secret的儲存卷,掛載叢集與定義的secret物件到容器內部 scretname: string items: - key: string path: string configMap: #型別為configMap的儲存卷,掛載預定義的configMap物件到容器內部 name: string items: - key: string path: string

K8S系列第七篇(Pod、kubectl命令、labels)

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系列技術文件