1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      什么是對(duì)象模型

      這篇文章主要介紹“什么是對(duì)象模型”,在日常操作中,相信很多人在什么是對(duì)象模型問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”什么是對(duì)象模型”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

      創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比措勤網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式措勤網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋措勤地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

      一、對(duì)象模型總覽

      k8s可以看做是面向?qū)ο蟮模款惙?wù)可看做是k8s的一個(gè)對(duì)象。這些對(duì)象由用戶定義yaml,k8s的api負(fù)責(zé)創(chuàng)建。所有對(duì)象包含spec(規(guī)范)+status兩類基本信息。

      例如:k8s創(chuàng)建pod的api為:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#pod-v1-core

      kubectl 也會(huì)將yaml轉(zhuǎn)成json發(fā)送到master節(jié)點(diǎn)。

      k8s中常用的對(duì)象有pod、deployment、service、statefulSet等,每個(gè)對(duì)象至少包含3個(gè)metadata:namespace、name、uid。

      什么是對(duì)象模型

      二、k8s中常見的object kind

      • pod

        • 基本調(diào)度單元,特定關(guān)系的一組容器集合,最小的部署集合。

        • 非持久性實(shí)體,調(diào)度失敗、自愈等情況會(huì)被終止,重建,不建議手動(dòng)創(chuàng)建Pod,而是通過(guò)controller創(chuàng)建pod,如deployment。

      • Service

        • pod 重啟之后ip會(huì)改變,多個(gè)相同服務(wù)的pod需要有discovery+loadbalance 。這一點(diǎn)與“微服務(wù)”中的概念一致。通過(guò)label selector 可輕松實(shí)現(xiàn)邏輯分組。

        • service 的聲明周期內(nèi),ip不會(huì)改變。可通過(guò)nodeport 暴露到外部。

        • 有的service不需要ip、有的service 不需要負(fù)載均衡

      • Controllers

        • Replicaset (rs)副本數(shù),用于loadbalance和冗余。(老版本是ReplicationController- rc,算是功能升級(jí),官方推薦使用rs 代替rc)。現(xiàn)階段非特殊情況如升級(jí)pod的操作,也不推薦單獨(dú)使用,

      • Deployment

      使用并管理rs ,算是更高一層的概念,這是現(xiàn)在比較常用的部署app的方式。deployment為pod和rs提供聲明式更新(而非命令式)。支持滾動(dòng)更新(rollingUpdate),支持回滾操作。

      什么是對(duì)象模型
       

      statefulSet(k8s 1.9 GA)

      我們自己開發(fā)的應(yīng)用一般都是stateless的,像是redis、zk、kafka、MySQL這類的中間件通常需要使用statefulSet。通常適用于穩(wěn)定的持久存儲(chǔ)、穩(wěn)定的網(wǎng)絡(luò)標(biāo)識(shí)、有序部署有序擴(kuò)展、有序收縮、有序滾動(dòng)升級(jí)的場(chǎng)景。

      pod的存儲(chǔ)一般都是volumes外掛到persistent介質(zhì)。并且伸縮或刪除不會(huì)刪除關(guān)聯(lián)的存儲(chǔ)。需要headless service負(fù)責(zé)pod的網(wǎng)絡(luò)身份。

      "注意:statefulSet 對(duì)應(yīng)的service為headless servie,和普通的service的區(qū)別在于,普通的有cluster ip,通過(guò)只有service 有DNS,通過(guò)iptables進(jìn)行負(fù)載。headless service無(wú)cluster ip,endpoints是所有pod的dns地址。就意味著statefulset 創(chuàng)建pod的時(shí)候?yàn)閜od生成了dns信息。如3 節(jié)點(diǎn)的mysql,會(huì)生成mysql-0 ... mysql-2三個(gè)pod(pod名稱生產(chǎn)規(guī)則為pod+遞增序號(hào)),并且會(huì)生成域: $(podname).(headless server name),完整FQDN為: $(podname).(headless server name).namespace.svc.cluster.local"

      看一個(gè)完整的statefulSet + headless service 的示例。

      apiVersion: v1
      kind: Service
      metadata:
        name: nginx
        labels:
          app: nginx
      spec:
        ports:
        - port: 80
          name: web
        clusterIP: None
        selector:
          app: nginx
      ---
      apiVersion: apps/v1beta1
      kind: StatefulSet
      metadata:
        name: web
      spec:
        serviceName: "nginx"
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx
              image: nginx:1.11
              ports:
              - containerPort: 80
                name: web
              volumeMounts:
              - name: www
                mountPath: /usr/share/nginx/html
            nodeSelector:
              node: kube-node3
            volumes:
              - name: www
                hostPath:
                  path: /mydir
      • DeamonSet

        每個(gè)node都有一個(gè)pod副本運(yùn)行。常用在后臺(tái)常駐程序如ceph,日志收集,心跳檢查,Prometheus exporter等。

      • ConfigMap

        向pod 提供非敏感的配置信息,支持鍵值對(duì),單個(gè)屬性,配置文件。

        使用方式:環(huán)境變量,容器命令行參數(shù),數(shù)據(jù)卷掛載。

        定義示例:

      apiVersion:V1
      kind:ConfigMap
      metadata:
          name:hello-config
          namespace:public-config
      data:
          title:hello everybody
          sex:girl

      引用示例:

      apiVersion:V1
      kind:deployment
      metadata:
          name:hello-dem
      spec:
          containers:
          - name:goodboy
              image:hub/images
              command:["/bin/bash","-c","echo ${envTitle} ${envSex}"]
              env:
                  - name:envTitle
                    valueFrom:
                      configMapKeyRef:
                          name:hello-config
                          key:title
                  - name:envSex
              valueFrom:
                  configMapKeyRef:
                      name:hello-config
                      key:sex
      • Secret

        對(duì)應(yīng)于ConfigMap,用于敏感信息配置,如token,密碼,秘鑰等。

      • Endpoints

        service 和 pod 之間的關(guān)系會(huì)創(chuàng)建endpoint對(duì)象,默認(rèn)與service 同名。kube-proxy將會(huì)監(jiān)聽service 和 endpoint的變化,從而更新iptables的規(guī)則。

      • PodDisruptionBudget(pdb,主動(dòng)驅(qū)逐保護(hù))

        • 沒有pdb。當(dāng)進(jìn)行節(jié)點(diǎn)維護(hù)時(shí),如果某個(gè)服務(wù)的多個(gè)pod在該節(jié)點(diǎn)上,則節(jié)點(diǎn)的停機(jī)可能會(huì)造成服務(wù)中斷或者服務(wù)降級(jí)。舉個(gè)例子,某服務(wù)有5個(gè)pod,最低3個(gè)pod能保證服務(wù)質(zhì)量,否則會(huì)造成響應(yīng)慢等影響,此時(shí)該服務(wù)的4個(gè)pod在node01上,如果對(duì)node01進(jìn)行停機(jī)維護(hù),此時(shí)只有1個(gè)pod能正常對(duì)外服務(wù),在node01的4個(gè)pod遷移過(guò)程中,就會(huì)影響該服務(wù)正常響應(yīng);

        • pdb能保證應(yīng)用在節(jié)點(diǎn)維護(hù)時(shí)不低于一定數(shù)量的pod運(yùn)行,從而保持服務(wù)質(zhì)量;

      • 等等其他的如 ingress

      三、 k8s中有常見的metadata

      • name && UID (uid是在k8s的整個(gè)聲明周期中均唯一,不會(huì)產(chǎn)生相同的uid,可對(duì)等為mysql的auto increment key)

        來(lái)看一個(gè)api訪問(wèn)對(duì)象的路徑:/api/{version}/namespaces/{namespace}/{object-kind}/{name} ,k8s通過(guò)層層限定來(lái)尋找唯一標(biāo)識(shí)的name。

      • namespace

        對(duì)一組資源和對(duì)象的抽象集合,從邏輯上劃分k8s實(shí)現(xiàn)分層管理,并實(shí)現(xiàn)一定層度上的資源和權(quán)限隔離。

        內(nèi)置三個(gè)namespace:default,kube-system(存放api-server、dns插件等),kube-public(供所有用戶包含未經(jīng)過(guò)身份驗(yàn)證的用戶使用,實(shí)現(xiàn)資源集群內(nèi)共享)

        Node和persistentVolume(簡(jiǎn)稱PV,通過(guò)PVC和pod綁定)不屬于任何namespace。

      • label

        標(biāo)識(shí)性的數(shù)據(jù),有嚴(yán)格的命名規(guī)范,k8s可通過(guò)標(biāo)簽組合管理對(duì)象,達(dá)到松耦合。在spec中通過(guò)selectors進(jìn)行匹配。

      • annotation(理解為java注釋吧)

        非標(biāo)識(shí)性的元數(shù)據(jù)附加到對(duì)象上。通常會(huì)有時(shí)間戳,版本號(hào),用戶信息等輔助信息。


      四、k8s spec中常見的參數(shù)

      • selectors(標(biāo)簽和標(biāo)簽選擇器)

        對(duì)應(yīng)label對(duì)應(yīng)的key-value 進(jìn)行對(duì)象的選擇

      五、K8S的ip模型

      k8s的ip:

      • node Ip :node節(jié)點(diǎn)的ip,為物理ip.

      • pod Ip:pod的ip,即docker 容器的ip,為虛擬ip。

      • cluster Ip:service 的ip,為虛擬ip。提供一個(gè)集群內(nèi)部的虛擬IP以供Pod訪問(wèn)。

      六、k8s的volume

      k8s的volume和docker有所不同,v是獨(dú)立于容器的,與pod聲明周期相同,即pod刪除空間也被刪除。有多重類型

      • emptydir

        空目錄,pod中的容器會(huì)共享此目錄

        如下所示,busybox的文件寫入,在nginx容器中能夠讀出來(lái)。

      [root@master ~]# cat test.yaml 
      apiVersion: v1
      kind: Service
      metadata:
        name: serivce-mynginx
        namespace: default
      spec:
        type: NodePort
        selector:
          app: mynginx
        ports:
        - name: nginx
          port: 80
          targetPort: 80
          nodePort: 30080
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: deploy
        namespace: default
      spec:
        replicas: 1
        selector: 
          matchLabels:
            app: mynginx
        template:
          metadata:
            labels:
              app: mynginx
          spec:
            containers:
            - name: mynginx
              image: lizhaoqwe/nginx:v1
              volumeMounts:
              - mountPath: /usr/share/nginx/html/
                name: share
              ports:
              - name: nginx
                containerPort: 80
            - name: busybox
              image: busybox
              command:
              - "/bin/sh"
              - "-c"
              - "sleep 4444"
              volumeMounts:
              - mountPath: /data/
                name: share
            volumes:
            - name: share
              emptyDir: {}

      到此,關(guān)于“什么是對(duì)象模型”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


      當(dāng)前題目:什么是對(duì)象模型
      網(wǎng)頁(yè)地址:http://www.ef60e0e.cn/article/ihcjgo.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        滨海县| 伊宁市| 万盛区| 福海县| 房山区| 徐水县| 敖汉旗| 伊金霍洛旗| 安庆市| 庐江县| 临漳县| 临湘市| 肃北| 龙州县| 菏泽市| 象州县| 娱乐| 莱州市| 应城市| 巴东县| 乌兰察布市| 修文县| 霍城县| 高安市| 南平市| 莱阳市| 当雄县| 北安市| 平谷区| 顺义区| 托克逊县| 酒泉市| 西和县| 从化市| 分宜县| 海晏县| 盐边县| 晋中市| 六安市| 鹤峰县| 永年县|