??不會寫K8S資源編排yaml檔案?一文教會你如何掌握撰寫yaml檔案的技巧??
文章目錄
- ??不會寫K8S資源編排yaml檔案?一文教會你如何掌握撰寫yaml檔案的技巧??
- 一、熟悉下K8S常用命令引數以及資源管理
- 1.K8S集群常用命令
- 1.1.查詢資源狀態
- 1.2.查詢資源的事件資訊
- 1.3.查看pod資源的日志內容
- 1.4.運行一個資源
- 1.5.編輯一個資源的yaml檔案
- 1.6.洗掉一個資源
- 2.kubectl高級命令引數
- 3.k8s常用資源型別
- 二、教你有技巧的撰寫K8S編排檔案
- 1.快速生成一個deployment控制器的YAML檔案
- 2.雖然快速拿到了YAML檔案,但是不會配置怎么辦?
本文分為兩個章節:首先熟悉下K8S指令以及資源的型別、然后開始進入正文傳授經驗
K8S YAML推薦文章
K8S資源編排YAML檔案詳解
Kubernetes集群使用yaml檔案創建資源報錯經驗總結
一、熟悉下K8S常用命令引數以及資源管理
1.K8S集群常用命令
1.1.查詢資源狀態
kubectl get cs # 查看集群狀態
kubectl get nodes # 查看集群節點資訊
kubectl get ns # 查看集群命名空間
kubectl get svc -n kube-system # 查看指定命名空間的服務
kubectl get pod <pod-name> -o wide # 查看Pod詳細資訊
kubectl get pod <pod-name> -o yaml # 以yaml格式查看Pod詳細資訊
kubectl get pods,deploy,statefulset,sv,cm # 查看資源物件,查看所有Pod,deploy,statefulset,sv,cm串列
kubectl get rc,service # 查看資源物件,查看rc和service串列
kubectl get pod,svc,ep --show-labels # 查看pod,svc,ep能及標簽資訊
kubectl get all --all-namespaces # 查看所有的命名空間
1.2.查詢資源的事件資訊
語法格式:kubectl describe 資源型別 資源名稱
kubectl describe deploy deploy_name
1.3.查看pod資源的日志內容
kubectl logs -f pod_name -n namespace
1.4.運行一個資源
kubectl run nginx-pod --image=nginx --port=80
1.5.編輯一個資源的yaml檔案
語法格式:kubectl edit 資源型別 資源名稱
kubectl edit deploy deploy_name
1.6.洗掉一個資源
語法格式:kubectl delete資源型別 資源名稱
kubectl delete deploy deploy_name
2.kubectl高級命令引數
create #創建一個資源
edit #編輯一個資源
get #查看一個資源資訊
patch #更新一個資源
delete #洗掉一個資源
explain #展示資源檔案
create #創建一個資源
edit #編輯一個資源
get #查看一個資源資訊
patch #更新一個資源
delete #洗掉一個資源
explain #展示資源檔案
run #運行一個指定的鏡像
expose #暴露資源為service
describe #查看資源的詳細輸出
logs #查看容器在pod中的日志
attach #進入運行的容器
exec #進入容器
cp #在pod內外復制檔案
rollout #管理資源的發布
scale #擴容或收縮pod的數量
autoscale #自動跳轉pod的數量
apply #更新資源配置
label #更新資源上的標簽
cluster-info #顯示集群資訊
version #顯示集群版本
3.k8s常用資源型別
集群級別資源
| 資源名稱 | 縮寫 | 資源作用 |
|---|---|---|
| nodes | no | 集群組成部分 |
| namespace | ns | 隔離pod |
pod資源
| 資源名稱 | 縮寫 | 資源作用 |
|---|---|---|
| pod | po | 裝在容器 |
pod資源控制器
| 資源名稱 | 縮寫 | 資源作用 |
|---|---|---|
| replicationcontrollers | rc | 控制pod資源 |
| replicasets | rs | 控制pod資源 |
| deployment | 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 | 配置 |
二、教你有技巧的撰寫K8S編排檔案
1.快速生成一個deployment控制器的YAML檔案
利用kubectl create創建一個資源加上–dry-run引數以及-o yaml引數生成YAML檔案內容
這樣的方式既不會創建一個資源,同時我們也拿到了一個基本的YAML檔案,在這個YAML檔案的基礎上進行配置即可
# kubectl create deployment nginx --image=nginx:1.17 -o yaml --dry-run
W1013 17:02:29.974994 20517 helpers.go:553] --dry-run is deprecated and can be replaced with --dry-run=client.
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx:1.17
name: nginx
resources: {}
status: {}
2.雖然快速拿到了YAML檔案,但是不會配置怎么辦?
這就要用到kubectl explain引數了,會起到超級大的作用
以Pod資源為例:查看Pod資源YAML可配置的引數串列
[root@k8s-master ~]# kubectl explain pod
KIND: Pod
VERSION: v1 //撰寫yaml檔案時第一行的版本號可以從這里進行查找
FIELDS: //可配置的一級屬性,基本所有資源都是如下五個,如果當前級別配置引數后面<>中是string就表示沒有下一級配置引數,直接填寫一個字串即可,如果<>為object說明他還有下一級配置引數,可以通過資源型別.屬性的方式查找
apiVersion <string> //當前資源支持的版本
kind <string> //控制器型別
metadata <Object> //元資料
spec <Object> //設定屬性
status <Object> //記錄pod的狀態,包括ip地址、創建時間等等,是自動增加的,不是手動寫入的
列印出Pod資源鉤子函式的可執行引數串列
技巧就是按著下面的命令格式一級一級往里套就可以寫出漂亮的yaml檔案了
[root@binary-k8s-master1 ~]# kubectl explain pod.spec.containers.lifecycle.postStart
[root@binary-k8s-master1 ~]# kubectl explain pod.spec.containers.lifecycle.postStart.exec|httpGet|tcpSocket
KIND: Pod
VERSION: v1
RESOURCE: lifecycle <Object>
FIELDS:
postStart <Object> //定義容器啟動后執行的鉤子函式
exec <Object> //exec命令方式,在容器里面執行相應的命令
command <[]string> //指定運行的命令
httpGet <Object> //httpGet方式,探測容器應用的url
host <string> //主機地址,一般就是pod地址
path <string> //請求的url路徑
port <string> //應用埠號
scheme <string> //協議
tcpSocket <Object> //tcpSocket方式,訪問容器指定的socket
host <string> //pod地址
port <string> //埠號
preStop <Object> //定期容器關閉前執行的鉤子函式
exec <Object> //exec命令方式,在容器里面執行相應的命令
·····
httpGet <Object> //httpGet方式,探測容器應用的url
·····
tcpSocket <Object> //tcpSocket方式,訪問容器指定的socket
·····
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/312173.html
標籤:其他
