溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker筆記22-k8s資源清單定義入門(mén)

發(fā)布時(shí)間:2020-08-14 07:49:10 來(lái)源:ITPUB博客 閱讀:198 作者:czxin788 欄目:開(kāi)發(fā)技術(shù)

資源分類:    

    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)存等)

查看pod的yaml格式清單

[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:

創(chuàng)建資源的方法

    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

例子-用ymal創(chuàng)建pod

    用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

查看pod里面容器的日志

[root@master manifests]# kubectl logs pod-demo myapp

說(shuō)明:pod-demo是上面我們創(chuàng)建的pod名字,myapp是pod里面容器的名字。

進(jìn)入運(yùn)行中的容器

[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 pod和用資源清單創(chuàng)建的pod區(qū)別

    我們用命令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



向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI