您好,登錄后才能下訂單哦!
1)workload型資源:service,pod,Redeployment(控制器,我們很少直接操作pod,而是通過(guò)控制器來(lái)操作Pod)、ReplicaSet、StatefilSet、Job、Cronjob
2)服務(wù)發(fā)現(xiàn)及服務(wù)均衡資源型資源:Service、Ingress
3)配置與存儲(chǔ)型資源:Volume、CSI(容器存儲(chǔ)接口,可以擴(kuò)展各種第三方的存儲(chǔ)卷)、ConfigMap、Secret、DownwardAPI
4)集群級(jí)資源:Namespace、Node、Role、rolebinding、clusterrolebinding
5)元數(shù)據(jù)型資源:HPA、podtemplate、limitrange(限制資源的如cpu、內(nèi)存等)
[root@master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE client 1/1 Running 0 17h myapp-fcc5f7f7c-4x2p7 0/1 ImagePullBackOff 0 12h myapp-fcc5f7f7c-dnkdq 0/1 ImagePullBackOff 0 12h mytomcat-5f8c6fdcb-7t5s2 1/1 Running 0 11h mytomcat-5f8c6fdcb-lhcsc 1/1 Running 0 12h mytomcat-5f8c6fdcb-rntrg 1/1 Running 0 12h nginx-deploy-5b595999-fpm8x 1/1 Running 0 12h
[root@master ~]# kubectl get pods mytomcat-5f8c6fdcb-lhcsc NAME READY STATUS RESTARTS AGE mytomcat-5f8c6fdcb-lhcsc 1/1 Running 0 12h
[root@master ~]# kubectl get pods mytomcat-5f8c6fdcb-lhcsc -o yaml spec: #規(guī)格、特性,用戶期望的狀態(tài) containers: tolerations: #容忍度 status:#顯示當(dāng)前資源的當(dāng)前狀態(tài) conditions:
apiserver僅接收J(rèn)SON格式的資源定義。我們可以使用yaml格式提供配置清單,因?yàn)閥mal格式是以縮進(jìn)的方式來(lái)寫(xiě)的,更利用人們的理解。我們寫(xiě)完ymal格式的配置清單后,apiserver可以自動(dòng)將其轉(zhuǎn)為json,然后再提交。
另外,我們使用命令kubectl run,其最終也是自動(dòng)轉(zhuǎn)為json格式的資源定義了。
大部分的的資源的配置清單包含:
1)apiVersion:表示屬于哪個(gè)api群組和版本,可以通過(guò)命令 kubectl api-versions來(lái)看,顯示方式為group/version
2)Kind:資源類別,有pod、deloyment類別等
3)metadata:元數(shù)據(jù),包括:
a) name:在同一資源下name是必須唯一的;
b) namespace
c) labels
d) annotations:資源注解
e)uid
f) resourceversion:
g) OwnerReferences
h) selfLink:每個(gè)資源引用的PATH,格式為/api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME
4) spec,定義用戶期望的目標(biāo)狀態(tài)(disired state)
5)status:表示當(dāng)前狀態(tài),讓當(dāng)前狀態(tài)向期望的目標(biāo)狀態(tài)靠近,本字段有k8s集群維護(hù)。
由于spec的字段很多,我們背不下來(lái)了,所以可以如下查看幫助。
[root@master ~]# kubectl explain pods
看medadata下有哪些字段可以用:
[root@master ~]# kubectl explain pods.metadata
看spec下有哪些字段可以用:
[root@master ~]# kubectl explain pods.spec
看spec.containers下有哪些字段可以用:
[root@master ~]# kubectl explain pods.spec.containers
用yaml格式創(chuàng)建一個(gè)pod
[root@master ~]# mkdir manifests [root@master ~]# cd manifests/
[root@master manifests]# cat pod-demo.yaml apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: default labels: app: myapp #kv格式的,也可以用花括號(hào)表示 tier: frontend #定義所屬的層次 spec: containers: - name: myapp #前面的-號(hào)表示這是一個(gè)列表格式的,也可以用中括號(hào)表示 image: tomcat - name: busybox image: busybox:latest command: - "/bin/sh" - "-c" - "echo $(date) >> /usr/share/nginx/html/index.html; sleep 5" #以上命令也可以寫(xiě)作:command: ["/bin/sh","-c","sleep 3600"]
[root@master manifests]# kubectl create -f pod-demo.yaml pod/pod-demo created
[root@master manifests]# kubectl get pods NAME READY STATUS RESTARTS AGE pod-demo 2/2 Running 1 33s
[root@master manifests]#kubectl describe pods pod-demo 可以看到一個(gè)pod里面跑了兩個(gè)容器,一個(gè)是busybox,一個(gè)是tomcat
[root@master manifests]# kubectl logs pod-demo myapp
說(shuō)明:pod-demo是上面我們創(chuàng)建的pod名字,myapp是pod里面容器的名字。
[root@master manifests]# kubectl exec -it pod-demo -c myapp -- /bin/bash root@pod-demo:/usr/local/tomcat#
-c:自動(dòng)容器名字;pod-demo是我們自己創(chuàng)建的容器名字。
[root@master manifests]# kubectl delete -f pod-demo.yaml pod "pod-demo" deleted
我們用命令run一個(gè)pod是需要?jiǎng)?chuàng)建一個(gè)控制器deployment的,所以刪除這樣的pod后,控制器deployment會(huì)自動(dòng)新建一個(gè),怎么也刪不掉。
而我們用配置清單創(chuàng)建的pod,沒(méi)有控制器deployment,是一個(gè)裸pod,所以一刪除就沒(méi)了,這個(gè)挺好。
命令創(chuàng)建的:
[root@master ~]# kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --protocol=TCP
資源清單創(chuàng)建的:
[root@master manifests]# kubectl create -f pod-demo.yaml pod/pod-demo created
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。