<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Kubernetes中Deployment、ReplicaSet、Pod、Service的概念及關系

      • Pod:k8s管理的最小單位,包括一個或多個容器,是提供實際業務服務的組件。
      • ReplicaSet:是Pod的管理控制組件,監控Pod的健康狀況,保障Pod按照用戶的期望去運行。rs是ReplicationController組件的升級版,增加了標簽選擇器的范圍選擇功能。
      • Deployment:可管理ReplicaSet、Pod,實現Pod應用的滾動升級和回滾、擴容和縮容。
      • Service:集群中Pod的數量和訪問地址可能是變化的,這些Pod中的業務應用需要對外提供服務,可通過Service對外提供統一服務地址,Service通過標簽選擇器,匹配一組提供服務的Pod,從而對客戶端隔離了后端Pod的變化。

      一、Pod

      Pod 是可以在 Kubernetes 中創建和管理的、最小的可部署的計算單元。Pod中包含了一個或多個容器,還包括了存儲、網絡等各個容器共享的資源。Pod支持多種容器環境,Docker則是最流行的容器環境。
      簡單來說k8s不想直接操作container,因為操作container的事情是docker來做的,k8s中要有自己的最小操作單位,稱之為Pod。說白了,Pod就是一個或多個Container的組合。

      每個Pod中都有一個pause容器,pause是Kubernetes基礎設施的一部分,Kubernetes管理的所有pod里,pause容器是第一個啟動的,用于實現Kubernetes集群里pod之間的網絡通訊。

      二、ReplicaSet

      ReplicaSet 的目的是維護一組在任何時候都處于運行狀態的 Pod 副本的穩定集合。 因此,它通常用來保證給定數量的、完全相同的 Pod 的可用性。(確保任何時間都有指定數量的 Pod 副本在運行)
      先說下Replication Controller。Replication Controller的作用是確保Pod以指定的副本個數運行。
      ReplicaSet是Replication Controller升級版。ReplicaSet和Replication Controller之間的唯一區別是對選擇器支持。Replication Controller只支持基于等式的selector(env=dev或environment!=qa),但ReplicaSet還支持新的,基于集合的selector(version in (v1.0,v2.0)或env notin (dev, qa))

      2.1 Label(標簽)

      Label是Kubernetes系統中的一個核心概念。
      Label以key/value鍵值對的形式附加到各種對象上,如Pod、Service、RC、Node等。
      Label定義了這些對象的可識別屬性,用來對它們進行管理和選擇。Label可以在創建時附加到對象上,也可以在對象創建后通過API進行管理。

      2.2 Label Selector(標簽選擇器)

      在為對象定義好Label后,其他對象就可以使用Label Selector(選擇器)來定義其作用的對象了。
      Label Selector的定義由多個逗號分隔的條件組成。

      “labels”: {
      “key1”: “value1”,
      “key2”: “value2”
      }

      當前有兩種Label Selector:
      基于等式的(Equality-based)和基于集合的(Set-based),在使用時可以將多個Label進行組合來選擇。

      1. 基于等式的Label Selector使用等式類的表達式來進行選擇:
        name = redis-slave: 選擇所有包含Label中key="name"且value="redis-slave"的對象;
        env != production: 選擇所有包括Label中的key="env"且value不等于"production"的對象。

      2. 基于集合的Label Selector使用集合操作的表達式來進行選擇:
        name in (redis-master, redis-slave): 選擇所有包含Label中的key="name"且value="redis-master"或"redis-slave"的對象;
        name not in (php-frontend): 選擇所有包含Label中的key=“name"且value不等于"php-frontend"的對象。
        ps:在某些對象需要對另一些對象進行選擇時,可以將多個Label Selector進行組合,使用逗號”,"進行分隔即可。
        基于等式的LabelSelector和基于集合的Label Selector可以任意組合。
        例如:
        name=redis-slave,env!=production
        name not in (php-frontend),env!=production

      三、Deployment

      Deployment用于管理Pod、ReplicaSet,可實現滾動升級和回滾應用、擴容和縮容。

      四、Service

      試想一個問題,ReplicaSet定義了pod的數量是2,當一個pod由于某種原因停止了,ReplicaSet會新建一個pod,以確保運行中的pod數量始終是2。但每個pod都有自己的ip,前端請求不知道這個新pod的ip是什么,那前端的請求如何發送到新pod中呢?
      答案是使用Service

      k8s的Service定義了一個服務的訪問入口地址,前端的應用通過這個入口地址訪問其背后的一組由Pod副本組成的集群實例,來自外部的訪問請求被負載均衡到后端的各個容器應用上。Service與其后端Pod副本集群之間則是通過Label Selector實現關聯。
      簡單來說前端請求不是直接發送給Pod,而是發送到Service,Service再將請求轉發給pod。

      上圖可能太抽象,我們可以看看下面這張圖。
      假設我們把一個服務做了高可用,這個服務分別部署在了兩個節點上,當我們想訪問該服務時,則此時訪問的不是pod而是service,service會再給我們做負載均衡。

      k8s中的service中有三種類型:

      • ClusterIP:提供一個集群內部的虛擬IP以供Pod訪問。
      • NodePort:在每個Node上打開一個端口以供外部訪問。
      • LoadBalancer:通過外部的負載均衡器來訪問。

      五、總結

      Pod里是容器,Pod被ReplicaSet管理,ReplicaSet控制pod的數量;ReplicaSet被Deployment管理,Deployment控制pod應用的升級、回滾,當然也能控制pod的數量。Service提供一個統一固定入口,負責將前端請求轉發給Pod。
      deployment和service yaml:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-deployment
        labels:
          app: nginx
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx
              image: nginx:1.7.9
              ports:
              - containerPort: 80
      
      ---
      
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx-service
      spec:
        ports:
        - port: 81   
          protocol: TCP
          targetPort: 80
        selector:
          app: nginx
        type: NodePort
      

      Deployment

      ① apiVersion 是當前配置格式的版本。
      ② kind 是要創建的資源類型,這里分別創建了Deployment和Service。
      ③ metadata 是該資源的元數據,name 是必需的元數據項。
      ④ spec 部分是 Deployment 的規格說明。
      ⑤ replicas 指明副本數量,默認為 1。
      ⑥matchLabels 指匹配的pod的標簽是什么。
      ⑦ template 定義 Pod 的模板,這是配置文件的重要部分。
      ⑧ metadata 定義 Pod 的元數據,至少要定義一個 label。label 的 key 和 value 可以任意指定。
      ⑨ spec 描述 Pod 的規格,此部分定義 Pod 中每一個容器的屬性,name 和 image 是必需的。

      Service

      ① port Service 服務暴露的端口
      ② targetPort 容器暴露的端口
      ③ type Service的類型

       

       

      posted @ 2024-08-27 17:18  孤獨信徒  閱讀(741)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 午夜精品一区二区三区成人| 国产一区二区四区不卡| 免费国产一级特黄aa大片在线| 免费无码又爽又刺激高潮虎虎视频 | 最新的国产成人精品2020| 2021亚洲国产精品无码| 日本无翼乌邪恶大全彩h| 色综合色狠狠天天综合网| 国产一区一一区高清不卡| 人妻有码av中文字幕久久琪| 中文字幕国产精品综合| 久久涩综合一区二区三区| 国产精品中文字幕免费| 蜜桃视频网站| 玩弄美艳馊子高潮无码| 国产高潮刺激叫喊视频| 亚洲一区二区三区啪啪| 精品国产成人网站一区在线| 久久精品国产成人午夜福利| 亚洲欧美日韩精品久久亚洲区色播| 阿拉善右旗| 狠狠躁夜夜人人爽天96| 国产草草影院ccyycom| 久久精品国产久精国产一老狼| 蜜臀视频在线观看一区二区| 亚洲精品人妻中文字幕| 口爆少妇在线视频免费观看| 国产二区三区不卡免费| 欧洲精品一区二区三区久久| 久久这里都是精品一区| 久久久久青草线蕉亚洲| 熟妇人妻久久精品一区二区| 亚洲精品久久久久国色天香| 人人人澡人人肉久久精品| 日韩高清在线亚洲专区国产| 人人玩人人添人人澡超碰| 图片区 小说区 区 亚洲五月| 亚洲精品日本一区二区| 国产午夜福利短视频| av一区二区中文字幕| 国产午夜精品福利91|