91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是對象模型

發布時間:2021-10-14 14:29:52 來源:億速云 閱讀:193 作者:iii 欄目:編程語言

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

一、對象模型總覽

k8s可以看做是面向對象的,每類服務可看做是k8s的一個對象。這些對象由用戶定義yaml,k8s的api負責創建。所有對象包含spec(規范)+status兩類基本信息。

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

kubectl 也會將yaml轉成json發送到master節點。

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

什么是對象模型

二、k8s中常見的object kind

  • pod

    • 基本調度單元,特定關系的一組容器集合,最小的部署集合。

    • 非持久性實體,調度失敗、自愈等情況會被終止,重建,不建議手動創建Pod,而是通過controller創建pod,如deployment。

  • Service

    • pod 重啟之后ip會改變,多個相同服務的pod需要有discovery+loadbalance 。這一點與“微服務”中的概念一致。通過label selector 可輕松實現邏輯分組。

    • service 的聲明周期內,ip不會改變。可通過nodeport 暴露到外部。

    • 有的service不需要ip、有的service 不需要負載均衡

  • Controllers

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

  • Deployment

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

什么是對象模型
 

statefulSet(k8s 1.9 GA)

我們自己開發的應用一般都是stateless的,像是redis、zk、kafka、mysql這類的中間件通常需要使用statefulSet。通常適用于穩定的持久存儲、穩定的網絡標識、有序部署有序擴展、有序收縮、有序滾動升級的場景。

pod的存儲一般都是volumes外掛到persistent介質。并且伸縮或刪除不會刪除關聯的存儲。需要headless service負責pod的網絡身份。

<font color=red size=1> "注意:statefulSet 對應的service為headless servie,和普通的service的區別在于,普通的有cluster ip,通過只有service 有dns,通過iptables進行負載。headless service無cluster ip,endpoints是所有pod的dns地址。就意味著statefulset 創建pod的時候為pod生成了dns信息。如3 節點的mysql,會生成mysql-0 ... mysql-2三個pod(pod名稱生產規則為pod+遞增序號),并且會生成域: $(podname).(headless server name),完整FQDN為: $(podname).(headless server name).namespace.svc.cluster.local" </font>

看一個完整的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

    每個node都有一個pod副本運行。常用在后臺常駐程序如ceph,日志收集,心跳檢查,Prometheus exporter等。

  • ConfigMap

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

    使用方式:環境變量,容器命令行參數,數據卷掛載。

    定義示例:

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

    對應于ConfigMap,用于敏感信息配置,如token,密碼,秘鑰等。

  • Endpoints

    service 和 pod 之間的關系會創建endpoint對象,默認與service 同名。kube-proxy將會監聽service 和 endpoint的變化,從而更新iptables的規則。

  • PodDisruptionBudget(pdb,主動驅逐保護)

    • 沒有pdb。當進行節點維護時,如果某個服務的多個pod在該節點上,則節點的停機可能會造成服務中斷或者服務降級。舉個例子,某服務有5個pod,最低3個pod能保證服務質量,否則會造成響應慢等影響,此時該服務的4個pod在node01上,如果對node01進行停機維護,此時只有1個pod能正常對外服務,在node01的4個pod遷移過程中,就會影響該服務正常響應;

    • pdb能保證應用在節點維護時不低于一定數量的pod運行,從而保持服務質量;

  • 等等其他的如 ingress

三、 k8s中有常見的metadata

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

    來看一個api訪問對象的路徑:/api/{version}/namespaces/{namespace}/{object-kind}/{name} ,k8s通過層層限定來尋找唯一標識的name。

  • namespace

    對一組資源和對象的抽象集合,從邏輯上劃分k8s實現分層管理,并實現一定層度上的資源和權限隔離。

    內置三個namespace:default,kube-system(存放api-server、dns插件等),kube-public(供所有用戶包含未經過身份驗證的用戶使用,實現資源集群內共享)

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

  • label

    標識性的數據,有嚴格的命名規范,k8s可通過標簽組合管理對象,達到松耦合。在spec中通過selectors進行匹配。

  • annotation(理解為java注釋吧)

    非標識性的元數據附加到對象上。通常會有時間戳,版本號,用戶信息等輔助信息。


四、k8s spec中常見的參數

  • selectors(標簽和標簽選擇器)

    對應label對應的key-value 進行對象的選擇

五、K8S的ip模型

k8s的ip:

  • node Ip :node節點的ip,為物理ip.

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

  • cluster Ip:service 的ip,為虛擬ip。提供一個集群內部的虛擬IP以供Pod訪問。

六、k8s的volume

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

  • emptydir

    空目錄,pod中的容器會共享此目錄

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

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

到此,關于“什么是對象模型”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上饶市| 德阳市| 普兰店市| 灵山县| 福鼎市| 巴林右旗| 磐安县| 忻州市| 万盛区| 洛阳市| 丹阳市| 邹城市| 庄河市| 桓仁| 安仁县| 北京市| 林西县| 大石桥市| 西峡县| 许昌市| 潜江市| 新郑市| 平舆县| 伊金霍洛旗| 修水县| 休宁县| 容城县| 子洲县| 望城县| 定州市| 洛宁县| 巍山| 纳雍县| 望奎县| 贵德县| 礼泉县| 正镶白旗| 阜城县| 商都县| 望江县| 武鸣县|