目錄
一、 yaml和json介紹
1、yuml語言介紹
2、k8s支持的文件格式
3、yaml和json的主要區(qū)別
二、聲明式對象管理
1、命令式對象配置
2、聲明式對象配置
3、聲明式對象管理命令介紹
三、編寫資源配置清單
1、 編寫yaml文件
2、 啟動并查看資源
3、創(chuàng)建service服務對外提供訪問測試
4、創(chuàng)建并訪問
四、試運行與格式
1、-dry-run:試運行
2、查看生成yaml格式
3、查看生成的json格式
4、使用yaml格式導出生成的模板
5、使用yaml模板創(chuàng)建實例
6、將現(xiàn)有資源生成yaml模板導出并保存為文件
7、查看字段幫助信息
五、 資源控制總結(jié)
一、 yaml和json介紹
1、yuml語言介紹
YAML是一個類似XML、JSON的標記性語言,它強調(diào)以數(shù)據(jù)為中心,并不是以標識語言為重點,而YAML本身的定義比較簡單。號稱“一種人性化的數(shù)據(jù)格式語言”。
YAML的語法比較簡單,主要有下面幾個
大小寫敏感
使用縮進標識層級關(guān)系
縮進不允許使用tab,只允許空格(低版本限制)
縮進的空格數(shù)不重要,只要相同層級的元素左對齊即可
“ # ”表示注釋
YAML支持一下幾種數(shù)據(jù)類型
純量: 單個的,不可再分的值
對象: 鍵值對的集合,又稱為映射(mapping)/哈希(bash)/字典(dictionary)
數(shù)組: 一組按次序排列的值,又稱為序列(sequence)/ 列表(list)
?
#純量: 就是指的一個簡單的值,(字符串、布爾值、證書、浮點數(shù)、Null、時間、日期)
1、布爾類型
y1:true(false)
2、整型
y2:123
3、浮點型
y3:3.14
4、null類型
y4:~ (使用~或不寫,可以表示為null)
5、日期類型
y5: 2018-02-17 # 日期必須使用ISO 8601格式,即yyyy-MM-dd
6、時間類型
c6: 2018-02-17T15:02:31+08:00 # 時間使用ISO 8601格式,時間和日期之間使用T連接,最后使用+代表時區(qū)
7、字符串類型
c7: heima # 簡單寫法,直接寫值 , 如果字符串中間有特殊字符,必須使用雙引號或者單引號包裹
c8: line1
line2 # 字符串過多的情況可以拆成多行,每一行會被轉(zhuǎn)化成一個空格
#對象
//形式一
yudeqiang:
age: 25
address: nanjing
//形式二(了解)
yudeqiang: {age: 15,address: nanjing}
#數(shù)組
//形式一
address:
- nanjing
- beijing
//形式二(了解)
address: [nanjing,beijing]
注意點:
- 書寫yaml切記 【 : 】和【-】后面要加空格
- 如果要將多段yaml配置放在一個文件中,中間要使用—分隔
- yaml轉(zhuǎn)json格式網(wǎng)站:[https://www.json2yaml.com/convert-yaml-to-json](
2、k8s支持的文件格式
kubernetes支持YAML和JSON文件格式管理資源對象。
- JSON格式:只要勇于api接口之間消息的傳輸。
- YAML格式:勇于配置和管理,TAML是一中簡介的非標記性語言,內(nèi)容格式人性化,較易讀。
3、yaml和json的主要區(qū)別
YAML使用空格縮進,這是Python開發(fā)人員熟悉的領域。
javaScript開發(fā)人員喜歡JSON,因為它是Java Script的一個子集,可以直接在JavaScript中解釋和編寫,同時使用簡寫方式申明JSON,在使用沒有空格的典型變量名時,不需要鍵中的雙引號。
有很多解釋器在YAML和JSON的左右語言中都能很好的工作。
在需要請款下,YAML的空白格式可以更擴容器查看,因為將誒格式化需要更人性化的方法。
如果您的編輯器中沒有空格可見或縮進線指示符,那么 YAML 的空白雖然更緊湊,更容易查看,但可能難以手動編輯。
JSON 的序列化和反序列化要快得多,因為要檢查的功能明顯少于 YAML,這使得更小更輕的代碼能夠處理 JSON。
一個常見的誤解是 YAML 需要較少的標點符號并且比 JSON更緊湊,但這完全是錯誤的。空格是不可見的,所以看起來字符較少,但是如果你計算實際的空格是必要的,以便正確解釋 YAML以及正確的縮進,你會發(fā)現(xiàn) YAML 實際上需要比 JSON 更多的字符。JSON不使用空格來表示層次結(jié)構(gòu)或分組,并且可以通過刪除不必要的空格來輕松展平,以實現(xiàn)更緊湊的傳輸。
?
二、聲明式對象管理
1、命令式對象配置
命令式對象配置就是使用命令配合配置文件一起來操作kubernetes資源
①創(chuàng)建一個nginxpod.yaml文件。
apiVersion: v1
kind: Namespace
metadata:
name: dev
---
apiVersion: v1
kind: Pod
metadata:
name: nginxpod
namespace: dev
spec:
containers:
- name: nginx-containers
image: nginx:latest
②創(chuàng)建資源、查看、刪除等操作
kubectl create -f nginxpod.yaml
#基于yaml創(chuàng)建一個資源
kubectl get -f nginxpod.yaml
#基于yaml文件查看
kubectl delete -f nginxpod.yaml
#基于yaml文件刪除資源
#總結(jié)
命令式對象配置的方式操作資源,可以簡單認為:命令 + yaml配置文件(里面是命令需要的各種參數(shù))
2、聲明式對象配置
聲明式對象配置跟命令式對象配置很相似,但是它只有一個命令apply。
//還是基于前面的nginxpod.yaml文件演示
kubectl apply -f nginxpod.yaml
#創(chuàng)建資源
kubectl apply -f nginxpod.yaml
#再執(zhí)行一次操作,看返回什么信息
####此時修改nginxpod.yaml文件的nginx的版本號,然后再執(zhí)行
kubectl apply -f nginxpod.yaml
#再次查看返回結(jié)果
kubectl describe pods pod -n dev
#查看詳細過程
node01節(jié)點查看
#總結(jié)
//其實申明對象配置就是使用apply描述一個資源最終的狀態(tài)(在yaml中定義)使用apply操作資源
- 如果資源不存在,就創(chuàng)建,相當于kubectl create
- 如果資源存在,就更新,相當于kubectl patch
3、聲明式對象管理命令介紹
kubectl get deployment/nginx -o yaml
#查看pod控制器中的nginx格式,(就是以yaml的格式顯示出來)
kubectl get svc nginx-service -o yaml
#查看service中的nginx格式
kubectl explain deployment
#顯示deployment的相關(guān)規(guī)格
kubectl explain deployment.metadata
#解釋顯示deployment的更詳細的元數(shù)據(jù)(metadata)參數(shù)信息,
三、編寫資源配置清單
1、 編寫yaml文件
vim nginx-deployment.yaml
apiVersion: apps/v1 #指定api版本標簽
kind: Deployment #定義資源的類型/角色,deployment為副本控制器,此處資源類型可以是Deployment、Job、Ingress、Service等
metadata: #定義資源的元數(shù)據(jù)信息,比如資源的名稱、namespace、標簽等信息
name: nginx-deployment #定義資源的名稱,在同一個namespace空間中必須是唯一的
labels: #定義Deployment資源標簽
app: nginx
spec: #定義deployment資源需要的參數(shù)屬性,諸如是否在容器失敗時重新啟動容器的屬性
replicas: 3 #定義副本數(shù)量
selector: #定義標簽選擇器
matchLabels: #定義匹配標簽
app: nginx #需與 .spec.template.metadata.labels 定義的標簽保持一致
template: #定義業(yè)務模板,如果有多個副本,所有副本的屬性會按照模板的相關(guān)配置進行匹配
metadata:
labels: #定義Pod副本將使用的標簽,需與 .spec.selector.matchLabels 定義的標簽保持一致
app: nginx
spec:
containers: #定義容器屬性
- name: nginx #定義一個容器名,一個 - name: 定義一個容器
image: nginx:1.15.4 #定義容器使用的鏡像以及版本
ports:
- containerPort: 80 #定義容器的對外的端口
---------------------------------------------------------------
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
2、 啟動并查看資源
kubectl apply -f nginx-deployment.yaml
kubectl get deployment
kubectl get pods
3、創(chuàng)建service服務對外提供訪問測試
vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
selector:
app: nginx
4、創(chuàng)建并訪問
kubectl create -f nginx-service.yaml
kubectl get svc
//網(wǎng)頁訪問
http:20.0.55:31603
四、試運行與格式
1、-dry-run:試運行
- –dry-run:?表示試運行,不真正執(zhí)行命名(用來測試命令是否正確),即并不會真的創(chuàng)建出pod和deployment實例,去掉該參數(shù)后即可真正執(zhí)行命令。
kubectl create deployment dryrun-test --image=nginx --port=80 replicas=3 --dry-run
#打印相應的API對象而不執(zhí)行創(chuàng)建
2、查看生成yaml格式
- 使用–dry-run試運行可不觸發(fā)生成命令,然后通過 -o yaml 可實現(xiàn)對其 yaml 資源配置清單的查看
kubectl run dryrun-test --image=nginx --port=80 --dry-run -o yaml
#試運行一個pod,并將它的yaml配置格式顯示出來
3、查看生成的json格式
- 可通過-o json 查看該命令產(chǎn)生的json配置清單
kubectl create deployment dryrun-test --image=nginx --port=80 --replicas=3 --dry-run -o json
#試運行一個pod控制器,并顯示的pod的配置信息
4、使用yaml格式導出生成的模板
kubectl create deployment dryrun-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml > dryrun-test.yaml
#試運行pod控制器,并以yaml格式顯示出來,將結(jié)構(gòu)追加到指定的yaml文件中
5、使用yaml模板創(chuàng)建實例
kubectl apply -f dryrun-test.yaml
kubectl get pods,deployment
6、將現(xiàn)有資源生成yaml模板導出并保存為文件
kubectl get deployment dryrun-test -o yaml > export-test.yaml
7、查看字段幫助信息
explain 可一層層的查看相關(guān)資源對象的幫助信息
kubectl explain deployments.spec.template.spec.containers
五、 資源控制總結(jié)
三種方式應該怎么用?
創(chuàng)建/更新資源,使用聲明式對象配置: kubectl apply -f xxxx.yaml
刪除資源,使用命令式配置: kubectl delete -f xxxx.yaml
查詢資源,使用命令式對象管理: kubectl get(describe) 資源名稱+命令空間
?
#kubectl可以在node節(jié)點上運行嗎?
//kubectl的運行時需要配置的,它的配置文件時$HOME/.kube,如果想要在node節(jié)點運行次命令,需要將master上的.kube目錄復制到node節(jié)點上。
文章來源:http://www.zghlxwxcb.cn/news/detail-733802.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-733802.html
到了這里,關(guān)于【k8s】5、資源管理命令-聲明式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!