Kubernetes拋磚引玉

      網友投稿 938 2025-03-31

      一、云計算–獨立宇宙


      1.云是由很多小水滴組成的,把每一個計算機想象成小水滴,聯合起來就形成了云;傳統的水滴就是VM;Docker的出現,改變了小水滴的粒度

      Kubernetes拋磚引玉

      2.水滴獨立可運行,內部完整 (如 VM,Docker容器)

      3.一般水滴先出現,然后出現管理水滴的平臺(如OpenStack,Kubernetes)

      二、Kubernetes簡介

      1.Kubernetes是一個開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單并且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制

      2.Kubernetes一個核心的特點就是能夠自主的管理容器來保證云平臺中的容器按照用戶的期望狀態運行著(比如用戶想讓dlcatalog一直運行,用戶不需要關心怎么去做,Kubernetes會自動去監控,然后去重啟,新建,總之,讓dlcatalog一直提供服務)

      3.在Kubenetes中,所有的容器均在Pod中運行,一個Pod可以承載一個或者多個相關的容器

      三、Kubernetes典型名詞

      1.Pod

      在Kubernetes中,最小的管理元素不是一個個獨立的容器,而是Pod;一個Pod是一個容器環境下的“邏輯主機”,一個Pod是由多個相關的并且共享磁盤的容器組成;在同一個Pod里,容器之間的端口不能重復,否則Pod會起不來,或者起來后無限重啟

      2. Node

      Node是Pod真正運行的主機,可以是物理機,也可以是虛擬機;為了管理Pod,每個Node節點上至少要運行container runtime(比如Docker)、kubelet和kube-proxy服務;Node本質上不是Kubernetes來創建的,Kubernetes只是管理Node上的資源;雖然可以通過manifest創建一個Node對象(如下json所示),但Kubernetes也只是去檢查是否真的是有這么一個Node,如果檢查失敗,也不會往上調度Pod

      { "kind":?"Node", "apiVersion":?"v1", "metadata":?{ ????????????"name":?"10.63.90.18", ????????????"labels":?{ ????????????????????????"name":?"my-first-k8s-node" ???????????????????????} ?????????????} }

      3. Service

      Service是一個抽象的概念,是K8s里面的精華;每個K8s上的App,都可以申請集群內部的“名號”,用來代表自己;K8s就會給你的App分配一個Service許可證,許可證上面帶著“假IP”,任何集群內部只要訪問這個IP,就等于訪問你的App

      假設我們擁有一些Pod,每個Pod都開放了9083端口,并且都帶有一個標簽app=MyApp;如下這段json代碼會創建一個新的Service對象,名稱為my-dlcatalog-metastore-service,并且會連接目標端口9083;并且帶有標簽app=MyApp的Pod會被分配一個ip地址,這個ip是給kube-proxy使用的,集群內部只要訪問這個ip,就等于訪問你的App;需要注意的是,K8s里面的Pod實際ip一般沒什么用

      kind:?Service, apiVersion:?v1, metadata: ????name:?my-dlcatalog-metastore-service spec: ????selector: ????app:?MyApp ports: -?protocol:?TCP, ??port:?20403, ??targetPort:?9083

      4. ConfigMap

      ConfigMap用于保存配置數據的鍵值對,可以用來保存單個屬性,也可以用來保存配置文件;ConfigMap跟secret很類似,但它可以更方便地處理不包含敏感信息的字符串;

      使用volume將ConfigMap作為文件或目錄直接掛載

      如下表示將創建的ConfigMap直接掛載至Pod的/etc/config目錄下

      apiVersion:?v1 kind:?Pod metadata: ????name:?vol-test-pod spec: ????containers: ????????-?name:?test-container ??????????image:?10.63.30.148:20202/ei_cnnroth7a/jwsdlcatalog-x86_64:1.0.1.20200918144530 ??????????command:?[?"/bin/sh",?"bin/start_server.sh"?] ??????????volumeMounts: ??????????-?name:?config-volume ????????????mountPath:?/etc/config ????volumes: ????????-?name:?config-volume ??????????configMap: ????????????name:?special-config ????restartPolicy:?Never

      四、Kubernetes資源花式調度

      1.?????? 指定Node節點調度

      有三種方式指定 Pod 只運行在指定的 Node 節點上

      方式一:

      nodeSelector:只調度到匹配指定label的Node上

      方式二:

      nodeAffinity:功能更豐富的 Node 選擇器,比如支持集合操作

      nodeAffinity 目前支持兩種:requiredDuringSchedulingIgnoredDuringExecution與preferredDuringSchedulingIgnoredDuringExecution,分別代表必須滿足條件和優選條件

      比如下面的例子代表調度到包含標簽 kubernetes.io/e2e-az-name 并且值為 e2e-az1 或 e2e-az2 的 Node 上,并且優選還帶有標簽 another-node-label-key=another-node-label-value 的 Node

      apiVersion:?v1 kind:?Pod metadata: ????name:?with-node-affinity spec: ????affinity: ????????nodeAffinity: ????????????????requiredDuringSchedulingIgnoredDuringExecution: ????????????????????nodeSelectorTerms: ????????????????????-?matchExpressions: ????????????????????????-?key:?kubernetes.io/e2e-az-name ??????????????????????????operator:?In ??????????????????????????values: ??????????????????????????-?e2e-az1 ??????????????????????????-?e2e-az2 ????????????????preferredDuringSchedulingIgnoredDuringExecution: ????????????????-?weight:?1 ??????????????????preference: ????????????????????matchExpressions: ????????????????????-?key:?another-node-label-key ??????????????????????operator:?In ??????????????????????values: ??????????????????????-?another-node-label-value ????containers: ????-?name:?with-node-affinity ??????image:?10.63.30.148:20202/ei_cnnroth7a/jwsdlcatalog-x86_64:1.0.1.20200918144530

      方式三:

      podAffinity:調度到滿足條件的 Pod 所在的 Node 上

      podAffinity 基于 Pod 的標簽來選擇 Node,僅調度到滿足條件 Pod 所在的 Node 上,支持 podAffinity 和 podAntiAffinity

      這個功能比較繞,以下面的兩個例子作為講解:

      第一個例子表示:

      如果一個 “Node 所在 Zone 中包含至少一個帶有 security=S1 標簽且運行中的 Pod”,那么可以調度到該 Node;不調度到 “包含至少一個帶有 security=S2 標簽且運行中 Pod” 的 Node 上

      apiVersion:?v1 kind:?Pod metadata: ????name:?with-pod-affinity spec: ????affinity: ????????podAffinity: ????????????requiredDuringSchedulingIgnoredDuringExecution: ????????????-?labelSelector: ????????????????matchExpressions: ????????????????-?key:?security ??????????????????operator:?In ??????????????????values: ??????????????????-?S1 ??????????????topologyKey:?failure-domain.beta.kubernetes.io/zone ????????podAntiAffinity: ????????????preferredDuringSchedulingIgnoredDuringExecution: ????????????-?weight:?100 ????????????????podAffinityTerm: ????????????????????labelSelector: ????????????????????????matchExpressions: ????????????????????????-?key:?security ??????????????????????????operator:?In ??????????????????????????values: ??????????????????????????-?S2 ????????????????????topologyKey:?kubernetes.io/hostname ????????containers: ????????-?name:?with-node-affinity ??????????image:?10.63.30.148:20202/ei_cnnroth7a/jwsdlcatalog-x86_64:1.0.1.20200918144530

      第二個例子表示:

      如果一個 “Node 所在 Zone 中包含至少一個帶有 appVersion= jwsdlcatalog-x86_64-1.0.1.20200918144530標簽且運行中的 Pod”,那么推薦不調度到該 Node;不調度到 “包含至少一個帶有app= jwsdlcatalog-x86_64標簽且運行中 Pod” 的 Node 上

      spec: ??restartPolicy:?Always?????????#pod重啟策略 ??securityContext: ????runAsUser:?2000 ????fsGroup:?2000 ??affinity: ????podAntiAffinity: ??????preferredDuringSchedulingIgnoredDuringExecution: ????????-?podAffinityTerm: ????????????labelSelector: ??????????????matchExpressions: ????????????????-?key:?appVersion ??????????????????operator:?In ??????????????????values: ????????????????????-?concat: ????????????????????????-?get_input:?IMAGE_NAME ????????????????????????-?'-' ????????????????????????-?get_input:?IMAGE_VERSION ????????????#numOfMatchingPods:?"2"???#一定不要加此字段,此字段是華為自己的實現,社區沒有接納 ????????????topologyKey:?"failure-domain.beta.kubernetes.io/zone" ??????????weight:?100 ??????requiredDuringSchedulingIgnoredDuringExecution: ????????-?labelSelector: ????????????matchExpressions: ??????????????-?key:?app ????????????????operator:?In ????????????????values: ??????????????????-?get_input:?IMAGE_NAME ??????????numOfMatchingPods:?"1" ??????????topologyKey:?"kubernetes.io/hostname" ??containers: ????-?image: ????????concat: ??????????-?get_input:?IMAGE_ADDR???????????#拼接鏡像的地址(#用拼接函數解決數字型參數問題) ??????????-?"/" ??????????-?get_input:?IMAGE_NAME???????????#拼接鏡像的地址(#用拼接函數解決數字型參數問題) ??????????-?":" ??????????-?get_input:?IMAGE_VERSION????????#拼接鏡像的地址(#用拼接函數解決數字型參數問題) ??????name:?jwsdlcatalog

      注:本文純屬個人觀點,部分圖片如有雷同,純屬意外

      EI企業智能 智能數據 數據湖治理中心 DGC

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:避免實施麻煩始于合理的ERP選擇
      下一篇:怎么分享文件發送到微信/QQ?(文件夾如何分享到微信)
      相關文章
      亚洲国产成人久久综合一区77| 亚洲av最新在线观看网址| 亚洲国产精品成人| 自拍偷自拍亚洲精品播放| 亚洲日韩一区二区三区| 自拍偷区亚洲国内自拍| 亚洲午夜激情视频| 亚洲精品视频在线看| 国产亚洲Av综合人人澡精品| 综合偷自拍亚洲乱中文字幕| 国产精品无码亚洲精品2021 | 亚洲av无码片在线播放| 国产精品亚洲AV三区| 狠狠综合亚洲综合亚洲色| 国产成人精品日本亚洲语音| 色偷偷亚洲第一综合| 亚洲福利精品一区二区三区| 亚洲免费一区二区| 中文字幕精品亚洲无线码二区| 国产成人人综合亚洲欧美丁香花| 麻豆亚洲AV成人无码久久精品| 久久精品国产亚洲av天美18| 四虎精品亚洲一区二区三区| 亚洲六月丁香六月婷婷蜜芽| 一本色道久久综合亚洲精品蜜桃冫| 日韩亚洲国产综合高清| 亚洲国产精品无码久久久秋霞1| 亚洲成av人片在线天堂无| 亚洲?V乱码久久精品蜜桃| 久久亚洲国产成人影院网站| 国产成人人综合亚洲欧美丁香花| 亚洲国产成人精品91久久久| 中文字幕亚洲日韩无线码| 亚洲国产另类久久久精品| 亚洲最新视频在线观看| 亚洲免费在线视频播放| 亚洲一区二区三区写真| 日韩亚洲国产二区| 亚洲精品无码mv在线观看网站| 精品亚洲成α人无码成α在线观看| 亚洲最大激情中文字幕|