国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8S初級(jí)入門(mén)系列之三-Pod的基本概念和操作

這篇具有很好參考價(jià)值的文章主要介紹了K8S初級(jí)入門(mén)系列之三-Pod的基本概念和操作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、前言

? ? ? ?Pod的原意是豌豆莢的意思,一個(gè)豆莢里面包含了很多豆子。在K8S中,Pod也是類(lèi)似的意思,只不過(guò)這里的豆子就是容器。在K8S初級(jí)入門(mén)系列之一-概述中,我們對(duì)Pod有個(gè)初步的了解。

1、Pod是K8S編排和調(diào)度的最小基礎(chǔ)單元。

? ? ? ? 了解容器的同學(xué)會(huì)知道,容器之間通過(guò)隔離技術(shù)(namespace+cgroup+chroot),實(shí)現(xiàn)了應(yīng)用間的隔離。那么K8S為何不直接使用容器進(jìn)行調(diào)度,而非得再引入Pod的概念,使得模型更加復(fù)雜呢?現(xiàn)在的復(fù)雜系統(tǒng)有著成百上千的服務(wù),服務(wù)與服務(wù)之間的關(guān)系,從運(yùn)行環(huán)境看,需要做資源的隔離,但是從業(yè)務(wù)邏輯看,他們又存在親和性。

? ? ? ?比如下面的系統(tǒng)中,字?jǐn)?shù)統(tǒng)計(jì)是應(yīng)用服務(wù),實(shí)現(xiàn)業(yè)務(wù)功能,Nginx服務(wù)負(fù)責(zé)應(yīng)用服務(wù)的反向代理以及負(fù)載均衡,日志采集服務(wù)收集應(yīng)用服務(wù)的日志并進(jìn)行上報(bào),這三個(gè)服務(wù)必須部署運(yùn)行在一起,才能對(duì)外提供完整的功能。同時(shí)為了系統(tǒng)的可靠性,數(shù)據(jù)庫(kù)MySql服務(wù)需要和應(yīng)用服務(wù)分開(kāi)部署。

K8S初級(jí)入門(mén)系列之三-Pod的基本概念和操作,K8S,K8S,Pod

? ? ?這個(gè)例子中,如果用容器實(shí)現(xiàn),就需要將應(yīng)用服務(wù),Ngnix服務(wù),日志采集服務(wù)放到一個(gè)容器中,才能實(shí)現(xiàn)統(tǒng)一部署。這種方式不是說(shuō)不可以,但是違背了容器的設(shè)計(jì)理念,即一個(gè)進(jìn)程跑一個(gè)容器??梢钥吹剑琍od即有利于進(jìn)程資源的隔離,又能獨(dú)立打包部署和維護(hù)。

?? ? ?通過(guò)Pod就可以把具備親和性的服務(wù)包裹一起,而互斥性的服務(wù)部署在不同Pod中,K8S通過(guò)對(duì)Pod的調(diào)度和編排,解決了上述容器無(wú)法實(shí)現(xiàn)的問(wèn)題。

  • Pod是K8S中最核心,最基礎(chǔ)的概念

K8S的其他組件和概念,基本上都是直接或者間接圍繞Pod發(fā)展的。如下圖所示:

K8S初級(jí)入門(mén)系列之三-Pod的基本概念和操作,K8S,K8S,Pod

本章節(jié)我們先了解Pod的一些基本概念和操作,關(guān)于Pod高級(jí)特性我們放到后面章節(jié)。?

?二、YAML語(yǔ)言

? ? ?在了解Pod前,我們先看下YAML語(yǔ)言。在K8S的世界里,所有的對(duì)象都可以采用了YAML語(yǔ)言描述,YAML語(yǔ)言類(lèi)似于JSON,但是比JSON更加的清晰緊促,首先做個(gè)對(duì)比:

JSON的描述:

{ 
   "students":
      {
          "boy":20,
          "girl":22      
       }
}

YMAL的描述

Students:
  boy:  20
  girl: 22

可以看到,YAML是通過(guò)縮減和空白表示層次間的關(guān)系。YAML語(yǔ)言需要注意以下幾點(diǎn):

  • 對(duì)象與值之間用":"隔開(kāi),冒號(hào)后面一定要帶上空格。
  • 數(shù)組或者列表采用"-"開(kāi)頭,橫杠后面一定要帶上空格。
  • 在一個(gè)文件中可以有多個(gè)YAML描述對(duì)象,使用"---"分割。
  • 使用"#"描寫(xiě)注釋

具體的語(yǔ)法可以參見(jiàn)YAML官網(wǎng)

三、Pod的描述

? ? ? K8S采用YAML語(yǔ)言,聲明式的描述Pod對(duì)象。我們先看下較簡(jiǎn)單的Pod對(duì)象示例。

apiVersion: v1
kind: Pod
metadata:
  name: busybox-pod
  labels: 
     app: bash
spec:
  containers:
  - name: busybox
    image: busybox
    env:
      - name: type
        value: prod
      - name: log
        value: debug
    command:
      - "/bin/sh"
      - "-c"
      - "sleep 3000"
    args:
      - "$(type), $(log)"

? ? ?Pod對(duì)象有apiVersion,kind,metadata,spec四部分組成。apiVersion描述版本,kind描述類(lèi)型,對(duì)于Pod來(lái)說(shuō),固定為v1和Pod。

? ? ? metadata描述pod的元數(shù)據(jù),一般有name,以及l(fā)abels。name表示該P(yáng)od的名稱(chēng),labels是Pod的標(biāo)簽,可以有多個(gè),表示Pod的"歸類(lèi)",這個(gè)屬性很重要,后續(xù)的Pod的選擇都是依賴(lài)標(biāo)簽完成。

? ? spec是對(duì)Pod詳細(xì)定義,本篇我們重點(diǎn)了解containers,顧名思義,里面可以定義多個(gè)容器,容器重要的屬性如下:

  • name,容器的名稱(chēng)。
  • image,鏡像的名稱(chēng)。
  • env,環(huán)境變量,可以配置運(yùn)行時(shí)的環(huán)境變量列表。
  • command,容器啟動(dòng)時(shí),執(zhí)行的指令。
  • args,command啟動(dòng)的入?yún)ⅰ?/li>
  • ports,容器需要暴露的端口號(hào)列表。

Pod對(duì)象的屬性還有很多,在后續(xù)的介紹逐步了解。

四、Pod的操作

? ? ?kubectl是K8S的命令行工具(CLI),kubectl 提供了大量的命令,方便管理 Kubernetes 集群中的各種功能,下面我們使用kubectl操作Pod。

1、Pod的創(chuàng)建

使用kubectl apply -f <pod file>指令完成上述Pod的創(chuàng)建。

[root@k8s-master yaml]# kubectl apply -f busybox-pod.yaml 
pod/busybox-pod created

? ? ? 注意:使用kubectl create也可以創(chuàng)建Pod對(duì)象,create是命令式的,而apply是聲明式的,其創(chuàng)建邏輯是,不存在則創(chuàng)建,存在則比較差異,進(jìn)行更新,一般推薦apply。

2、Pod的查看

pod創(chuàng)建完成后,可以使用kubectl get pod 指令查看所有pod的運(yùn)行情況。

[root@k8s-master yaml]# kubectl get pod
NAME          READY   STATUS    RESTARTS   AGE
busybox-pod   1/1     Running   0          31m

?pod的name為我們定義的busybox,狀態(tài)status為Running。也可以加上"-o wide"看出更多的信息

[root@k8s-master yaml]# kubectl get pod -o wide
NAME          READY   STATUS    RESTARTS   AGE   IP             NODE        NOMINATED NODE   READINESS GATES
busybox-pod   1/1     Running   0          41m   10.244.36.75   k8s-node1   <none>           <none>

該P(yáng)od運(yùn)行在k8s-node1節(jié)點(diǎn)上,其ip為10.244.36.75。

通過(guò) kubectl describe pod <podname>可以查看具體某個(gè)pod的詳情

[root@k8s-master yaml]# kubectl describe pod busybox-pod
Name:         busybox-pod
Namespace:    default
Priority:     0
Node:         k8s-node1/10.0.0.4
Start Time:   Sun, 13 Nov 2022 21:43:20 +0800
Labels:       app=bash
Annotations:  cni.projectcalico.org/containerID: 30d0f991395befa857f6c2814f625f66e008c308564941285c7cd434a5a3ab18
              cni.projectcalico.org/podIP: 10.244.36.68/32
              cni.projectcalico.org/podIPs: 10.244.36.68/32
Status:       Running
IP:           10.244.36.75
IPs:
  IP:  10.244.36.75
Containers:
  busybox:
    Container ID:  docker://8b28fddf7104e31279f9dc1773630ee5cf4aef2a1d8311abe9dd0224ac2e0567
    Image:         busybox
    Image ID:      docker-pullable://busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -c
      sleep 3000
    Args:
      $(type), $(log)
    State:          Running
      Started:      Sun, 13 Nov 2022 22:33:54 +0800
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Sun, 13 Nov 2022 21:43:37 +0800
      Finished:     Sun, 13 Nov 2022 22:33:37 +0800
    Ready:          True
    Restart Count:  1
    Environment:
      type:  prod
      log:   debug
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-d5mwc (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-d5mwc:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age                  From               Message
  ----    ------     ----                 ----               -------
  Normal  Scheduled  58m                  default-scheduler  Successfully assigned default/busybox-pod to k8s-node1
  Normal  Pulled     58m                  kubelet            Successfully pulled image "busybox" in 16.819473827s
  Normal  Pulling    8m35s (x2 over 58m)  kubelet            Pulling image "busybox"
  Normal  Created    8m19s (x2 over 58m)  kubelet            Created container busybox
  Normal  Started    8m19s (x2 over 58m)  kubelet            Started container busybox
  Normal  Pulled     8m19s                kubelet            Successfully pulled image "busybox" in 15.486748688s

? ? ?詳情中包括了pod的信息,container信息,以及events事件信息。特別說(shuō)明的是,如果pod啟動(dòng)不成功,可以從event事件查看過(guò)程。

使用kubectl logs <podname>指令查看Pod的日志

[root@k8s-master yaml]# kubectl logs busybox-pod

3、進(jìn)入Pod

Pod運(yùn)行期間,可以通過(guò)命令kubectl exec -it <podname>?sh進(jìn)入到Pod內(nèi)部,執(zhí)行相關(guān)命令。

[root@k8s-master ~]# kubectl exec -it busybox-pod sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr D2:2C:E7:0F:4B:48  
          inet addr:10.244.36.75  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1480  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:446 (446.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

進(jìn)入pod的環(huán)境后,執(zhí)行ifconfig看下ip信息,該pod的ip與上面詳情中顯示的一致。

也可以使用kubectl exec -it <podname> -c <containername> sh進(jìn)入到某個(gè)容器內(nèi)部

[root@k8s-master ~]# kubectl exec -it busybox-pod -c busybox sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr D2:2C:E7:0F:4B:48  
          inet addr:10.244.36.75  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1480  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:446 (446.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

執(zhí)行ifconfig后看到到容器的ip和pod的ip是一致的。這個(gè)也就是我們后續(xù)要講的pod里所有的容器網(wǎng)絡(luò)是共享的。

4、Pod的刪除

使用kubectl delete pod <podname>命令刪除一個(gè)pod

[root@k8s-master ~]# kubectl delete pod busybox-pod
pod "busybox-pod" deleted
[root@k8s-master ~]# kubectl get pod
No resources found in default namespace.

在查詢(xún)列表為空,表示該pod已經(jīng)刪除

五、總結(jié)

? ? ? ? Pod是K8S最核心的概念,引入Pod的目的是為了解決存在親和性和互斥性復(fù)雜關(guān)系服務(wù)的調(diào)度和編排問(wèn)題。

? ? ? ?Pod采用YAML聲明式的對(duì)象描述,主要包括apiVersion,kind,metadata,spec四部分,其中spec中申明該P(yáng)od容器列表。

? 采用kubectl命令行工具,演示了對(duì)于Pod的創(chuàng)建,查看,修改,刪除等基本操作。

?附:

K8S初級(jí)入門(mén)系列之一-概述

K8S初級(jí)入門(mén)系列之二-集群搭建

K8S初級(jí)入門(mén)系列之三-Pod的基本概念和操作

K8S初級(jí)入門(mén)系列之四-Namespace/ConfigMap/Secret

K8S初級(jí)入門(mén)系列之五-Pod的高級(jí)特性

K8S初級(jí)入門(mén)系列之六-控制器(RC/RS/Deployment)

K8S初級(jí)入門(mén)系列之七-控制器(Job/CronJob/Daemonset)

K8S初級(jí)入門(mén)系列之八-網(wǎng)絡(luò)

K8S初級(jí)入門(mén)系列之九-共享存儲(chǔ)

K8S初級(jí)入門(mén)系列之十-控制器(StatefulSet)

K8S初級(jí)入門(mén)系列之十一-安全

K8S初級(jí)入門(mén)系列之十二-計(jì)算資源管理文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-607888.html

到了這里,關(guān)于K8S初級(jí)入門(mén)系列之三-Pod的基本概念和操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • K8S初級(jí)入門(mén)系列之九-共享存儲(chǔ)

    K8S初級(jí)入門(mén)系列之九-共享存儲(chǔ)

    ? ? ?Pod里面的容器都有自己獨(dú)立的文件系統(tǒng),來(lái)自容器鏡像,用于保存容器運(yùn)行的數(shù)據(jù),但容器的文件存儲(chǔ)有兩個(gè)弊端,一個(gè)是無(wú)法持久化,其生命周期與容器一致,一旦容器銷(xiāo)毀,相關(guān)的數(shù)據(jù)也就隨之一起銷(xiāo)毀;二是無(wú)法共享,Pod里多個(gè)容器之間無(wú)法共享數(shù)據(jù),會(huì)導(dǎo)致無(wú)

    2024年02月03日
    瀏覽(24)
  • K8S初級(jí)入門(mén)系列之十一-安全

    K8S初級(jí)入門(mén)系列之十一-安全

    ? ? 安全是K8S重要的特性,在K8S初級(jí)入門(mén)系列之四-Namespace/ConfigMap/Secret章節(jié),我們已經(jīng)已經(jīng)了解了Namespace,Secret與安全相關(guān)的知識(shí)。本篇將梳理K8S在安全方面的策略。主要包括兩個(gè)方面,API安全訪問(wèn)策略以及Pod安全策略。 在介紹安全前,我們先了解下用戶和用戶組的概念。

    2024年02月16日
    瀏覽(27)
  • K8S初級(jí)入門(mén)系列之四-Namespace/ConfigMap/Secret

    K8S初級(jí)入門(mén)系列之四-Namespace/ConfigMap/Secret

    ? ? ?本章節(jié)我們繼續(xù)學(xué)習(xí)Namespace、ConfigMap、Secret基礎(chǔ)概念,了解他們基本用法和操作。NameSpace為命名空間,在同一集群中試下資源隔離。ConfigMap通過(guò)key-value的方式實(shí)現(xiàn)明文配置數(shù)據(jù)的保存,Secret與ConfigMap類(lèi)似,不過(guò)是采用密文方式保存。 ? ? ?K8S集群可以通過(guò)Namespace創(chuàng)建多

    2024年02月15日
    瀏覽(31)
  • K8S基本概念+pod生命周期+容器重啟策略+Init容器和邊車(chē)容器+pod探針+postStart和preStop

    Kubernetes是谷歌以Borg為前身,基于谷歌15年生產(chǎn)環(huán)境經(jīng)驗(yàn)的基礎(chǔ)上開(kāi)源的一個(gè)項(xiàng)目,Kubernetes致力于提供跨主機(jī)集群的自動(dòng)部署、擴(kuò)展、高可用以及運(yùn)行應(yīng)用程序容器的平臺(tái)。 kube-APIServer:集群的控制中樞,各個(gè)模塊之間信息交互都需要經(jīng)過(guò)Kube-APIServer,同時(shí)它也是集群管理、資

    2024年04月15日
    瀏覽(45)
  • k8s概念-深入pod

    k8s概念-深入pod

    回到目錄? 工作負(fù)載(workload)是在kubernetes集群中運(yùn)行的應(yīng)用程序。無(wú)論你的工作負(fù)載是單一服務(wù)還是多個(gè)一同工作的服務(wù)構(gòu)成,在kubernetes中都可以使用pod來(lái)運(yùn)行它 workloads分為pod與controllers pod通過(guò)控制器實(shí)現(xiàn)應(yīng)用的運(yùn)行,如何伸縮,升級(jí)等 controllers 在集群中管理pod pod與控制

    2024年02月14日
    瀏覽(43)
  • 【K8S】pod 基礎(chǔ)概念講解

    Pod是kubernetes中最小的資源管理組件,Pod也是最小化運(yùn)行容器化應(yīng)用的資源對(duì)象。一個(gè)Pod代表著集群中運(yùn)行的一個(gè)進(jìn)程。kubernetes中其他大多數(shù)組件都是圍繞著Pod來(lái)進(jìn)行支撐和擴(kuò)展Pod功能的,例如,用于管理Pod運(yùn)行的StatefulSet和Deployment等控制器對(duì)象,用于暴露Pod應(yīng)用的Service和

    2024年02月13日
    瀏覽(24)
  • 深入掌握k8s核心概念--Pod(一)

    深入掌握k8s核心概念--Pod(一)

    激動(dòng)人心的時(shí)刻到了,終于到核心概念這一步了,前面的知識(shí)是有點(diǎn)“干燥了”。不急后面會(huì)看見(jiàn)代碼,可以多像金山打字一樣打一打代碼,熟悉一下yaml格式 Pod 在架構(gòu)中的位置 Pod 位于 Kubernetes 架構(gòu)的核心中,是構(gòu)建應(yīng)用的最小單元。Pod 可以用來(lái)運(yùn)行各種類(lèi)型的應(yīng)用,包括

    2024年04月17日
    瀏覽(22)
  • kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

    kubernetes(k8s) pod(資源限制、基礎(chǔ)概念)

    目錄 ?一、資源限制 1、概念 1.2、Pod和容器的資源請(qǐng)求和限制 1.3、CPU資源單位 1.4、內(nèi)存資源單位 1.5、CPU和內(nèi)存的Requests和Limits的特點(diǎn) 1.6、案例 二、pod 的兩種使用方式 三、pod 資源共享 四、底層容器Pause 1、pause 共享資源 1.1、網(wǎng)絡(luò) 1.2、存儲(chǔ) 1.3、小結(jié) 2、Pause主要功能 3、Pod

    2024年02月05日
    瀏覽(103)
  • 【K8S系列】Pod詳解

    【K8S系列】Pod詳解

    目錄 序言 1 前言 2 為什么需要pod 3 什么是Pod? 3.1 Pod的組成 3.2 Pod的用途 3.3 Pod的生命周期 3.4 Pod的特點(diǎn) 4 Pod的使用 5 結(jié)論? 任何一件事情,只要堅(jiān)持六個(gè)月以上,你都可以看到質(zhì)的飛躍。 今天學(xué)習(xí)一下K8s-Pod相關(guān)內(nèi)容,希望此文,能幫助讀者對(duì)K8s-pod有一個(gè)進(jìn)一步的了解 文章標(biāo)

    2024年02月01日
    瀏覽(18)
  • 【Kubernetes】 從基礎(chǔ)認(rèn)識(shí) k8s核心pod相關(guān)概念

    【Kubernetes】 從基礎(chǔ)認(rèn)識(shí) k8s核心pod相關(guān)概念

    提示:此篇幫助朋友們,養(yǎng)成從0到1不斷延伸知識(shí)的一種方法 最簡(jiǎn)單的創(chuàng)建pod入手 訪問(wèn)官方文檔,直接使用案例,進(jìn)行修改即可! 官網(wǎng)地址:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-pods-nodes/ 刪除不需要的部分,根據(jù)規(guī)則添加需要的參數(shù)即可得到需要的,代碼如

    2024年01月25日
    瀏覽(127)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包