k8s命令與k8s yaml資源描述檔案的基本使用
k8s命令使用總結
1.kubectl較多,可以安裝一下命令提示:echo "source <(kubectl completion bash)" >> ~/.bashrc
2.常見語法格式為:kubectl [command,如create delete set get 等] [TYPE ,如deployment,pod,service,node] [ NAME,資源命令 ] [其它,如 -o yaml ,-n default 等]
3.命令列表,kubectl --help,部分雷同docker
4.特別注意:
- k8s刪除pod,如果是以deployment方式建立的pod,刪除這樣的pod,k8s會立即重啟一個pod,以滿足當前配置副本數;刪除這樣的需要kubectl delete deployment mynginx直接刪除deployment或kubectl scale XXX進行縮容;如果是基於yaml資源描述檔案建立的pod直接刪除後k8s則不會重啟pod
- deployment可以通過kubectl expose暴露為service,kubectl delete service nginx只是取消暴露,deployment 及pod不會刪除
k8s資源的建立
k8s的deployment pod service node 等資源建立方式常見的有三種,可以通過命令建立如kubectl create deployment nginx --image=nginx,也可以通過yaml配置檔案進行建立,也可通過dashboard建立。通過資源描述檔案建立複雜但比較靈活,透明性,可擴充套件性強 。但常見的核心配置並不多,啟動方式的為kubectl create -f filename.yaml, 所有資源都可以通過kubectl get deployment nginx -o yaml 以yaml/json格式輸出。
1.基於配置檔案建立deployment 示例
apiVersion: apps/v1 # 1.9.0 之前的版本使用 apps/v1beta2,可通過命令 kubectl api-versions 檢視
kind: Deployment #指定建立資源的角色/型別
metadata: #資源的後設資料/屬性
name: deployment-nginx #資源的名字,在同一個namespace中必須唯一
spec:
replicas: 2 #副本數量2
selector: #定義標籤選擇器
matchLabels:
app: web-server
template: #這裡Pod的定義
metadata:
labels: #Pod的label
app: web-server
spec: # 指定該資源的內容
containers:
- name: nginx #容器的名字
image: nginx:1.12.1 #容器的映象地址
ports:
- containerPort: 80 #容器對外的埠
2.基於配置檔案建立pod示例
apiVersion: v1
kind: Pod
metadata:
name: pod-redis
labels:
name: redis
spec:
containers:
- name: pod-redis
image: docker.io/redis
ports:
- containerPort: 80 #容器對外的埠
pod比較重要,較完整的pod配置檔案是這樣的
apiVersion: v1 #必選,版本號,例如v1
kind: Pod #必選,Pod
metadata: #必選,後設資料
name: string #必選,Pod名稱
namespace: string #必選,Pod所屬的名稱空間
labels: #自定義標籤
- name: string #自定義標籤名字
annotations: #自定義註釋列表
- name: string
spec: #必選,Pod中容器的詳細定義
containers: #必選,Pod中容器列表
- name: string #必選,容器名稱
image: string #必選,容器的映象名稱
imagePullPolicy: [Always | Never | IfNotPresent] #獲取映象的策略 Alawys表示下載映象 IfnotPresent表示優先使用本地映象,否則下載映象,Nerver表示僅使用本地映象
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 #記憶體清楚,容器啟動的初始可用數量
livenessProbe: #對Pod內個容器健康檢查的設定,當探測無響應幾次後將自動重啟該容器,檢查方法有exec、httpGet和tcpSocket,對一個容器只需設定其中一種方法即可
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的重啟策略,Always表示一旦不管以何種方式終止執行,kubelet都將重啟,OnFailure表示只有Pod以非0退出碼退出才重啟,Nerver表示不再重啟該Pod
nodeSelector: obeject #設定NodeSelector表示將該Pod排程到包含這個label的node上,以key:value的格式指定
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的儲存卷,掛載叢集與定義的secre物件到容器內部
scretname: string
items:
- key: string
path: string
configMap: #型別為configMap的儲存卷,掛載預定義的configMap物件到容器內部
name: string
items:
- key: string
path: string
3.基於配置檔案建立service示例
apiVersion: v1
kind: Service # 指明資源型別是 service
metadata:
name: httpd-svc # service 的名字是 httpd-svc
labels:
name: httpd-svc
spec:
ports: # 將 service 8080 埠對映到 pod 的 80 埠,使用 TCP 協議
- port: 8080
targetPort: 80
protocol: TCP
type: NodePort #暴露埠直接訪問
selector:
mylabelname: mylabelvalue # 指定匹配標籤選擇器mylabelname: mylabelvalue 的 pod 作為 service 的後端,即使這樣的pod不存在也行
4.docker-compose.yml轉換k8s資源描述檔案
工具下載:curl -L https://github.com/kubernetes/kompose/releases/download/v1.1.0/kompose-linux-amd64 -o kompose
檔案轉換:kompose convert -f docker-compose.yml
批量啟動:docker-compose的一個service可轉為一個deployment.yaml 和service.yaml。批量建立當前目錄yaml中配置的資源:kubectl create -f .
相關文章
- K8s YAML檔案中command 執行多條命令K8SYAML
- 在K8S中,deployment的yaml檔案如何編寫呢?K8SYAML
- k8s基本命令K8S
- K8S之yaml 檔案詳解pod、deployment、service(轉)K8SYAML
- Symfony 服務容器:使用 XML 或 YAML 檔案描述服務XMLYAML
- 使用 helm 部署 k8s 資源K8S
- 面向業務開發者的 k8s 基本命令K8S
- YAML的Java實現——JYAML基本原理與示例(1)匯出資料為YAML格式檔案YAMLJava
- 使用yaml檔案讀取資料YAML
- YAML的Java實現——JYAML基本原理與示例(2)匯入YAML格式檔案YAMLJava
- k8s配置檔案K8S
- k8s資源物件K8S物件
- YAML的Java實現——JYAML基本原理與示例(3)YAML對檔案流的處理YAMLJava
- K8S - 配置資源管理K8S
- k8s資源清單K8S
- linux操作文件-k8s基本命令LinuxK8S
- k8s 檢視容器資源使用率K8S
- YAML檔案YAML
- k8s資源管理方式K8S
- 使用metrics-server監控k8s的資源指標ServerK8S指標
- k8s介紹與常用命令K8S
- k8s資源管理(基礎操作)K8S
- 使用Kubesec檢查YAML檔案安全YAML
- 想列印k8s資源YAML結果搞懂了Client-Side & Server-Side ApplyK8SYAMLclientIDEServerAPP
- 使用檔案描述符恢復誤刪除的資料檔案
- .yaml引數檔案的編寫和使用YAML
- jb7中的部署描述檔案與weblogic中的部署描述檔案不同Web
- k8s基本原理K8S
- k8s基本單位PodK8S
- k8s命令彙總K8S
- minikube && k8s 命令K8S
- k8s工作負載資源之deploymentK8S負載
- 為k8s預留系統資源K8S
- k8s~為pod新增節點的資源限制K8S
- k8s Java 專案替換 jar 中的 class 檔案K8SJavaJAR
- K8s 資源全彙總 | K8s 大咖帶你 31 堂課從零入門 K8sK8S
- K8s - Helm的使用K8S
- YAML檔案簡介YAML