gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

kubernetes相關概念總結

kubernetes內部組件工作原理 http://dockone.io/article/5108

Master

Master是整個集群的控制中心,kubernetes的所有控制指令都是發(fā)給master,它負責具體的執(zhí)行過程。一般我們會把master獨立于一臺物理機或者一臺虛擬機,它的重要性不言而喻。

master上有這些關鍵的進程:

Kubernetes API Server(kube-apiserver),提供了HTTP Rest接口關鍵服務進程,是所有資源增、刪、改、查等操作的唯一入口,也是集群控制的入口進程。

Kubernetes Controller Manager(kube-controlker-manager),是所有資源對象的自動化控制中心,可以理解為資源對象的大總管。

Kubernetes Scheduler(kube-scheduler),負責資源調度(pod調度)的進程,相當于公交公司的“調度室”。 etcd Server,kubernetes里所有資源對象的數(shù)據(jù)都是存儲在etcd中的。

Node

除了Master,Kubernetes集群中其他機器被稱為Node,早期版本叫做Minion。Node可以是物理機也可以是虛擬機,每個 Node上會被分配一些工作負載(即,docker容器),當Node宕機后,其上面跑的應用會被轉移到其他Node上。

Node上有這些關鍵進程: kubelet:負責Pod對應容器的創(chuàng)建、啟停等任務,同時與Master節(jié)點密切協(xié)作,實現(xiàn)集群管理的基本功能。 kube-proxy:實現(xiàn)Kubernetes Service的通信與負載均衡機制的重要組件。 Docker Engine(docker):Docker引擎,負責本機容器的創(chuàng)建和管理。

kubectl get nodes #查看集群中有多少個node kubectl describe node #查看Node的詳細信息

Pod

查看pod命令: kubectl get pods 查看容器命令: docker ps

可以看到容器和pod是有對應關系的,在我們做過的實驗中,每個pod對應兩個容器,一個是Pause容器,一個是rc里面定義的容器(實際上,每個pod里可以有多個應用容器)。這個Pause容器叫做“根容器”,只有當Pause容器“死亡”才會認為該 pod“死亡”。Pause容器的IP以及其掛載的Volume資源會共享給該pod下的其他容器。

pod定義示例:

  apiVersion: v1   kind: pod   metadata:    name: myweb    labels:          name: myweb   spec:      containers:      - name: myweb        image: kubeguide/tomcat-app:v1        ports:        - containerPort: 8080        env:        - name: MYSQL_SERVICE_HOST          value: 'mysql'        - name: MYSQL_SERVICE_PORT    value: '3306'

每個pod都可以對其能使用的服務器上的硬件資源進行限制(CPU、內存)。CPU限定的最小單位是1/1000個cpu,用m表示,如100m,就是0.1個cpu。內存限定的最小單位是字節(jié),可以用Mi(兆) 表示,如128Mi就是128M。

在kubernetes里,一個計算資源進行配額限定需要設定兩個參數(shù):

1) requests:該資源的最小申請量

2) Limits:該資源允許的最大使用量。

資源限定示例: spec:

  spec:    containers:    - name: db           image: mysql           resources:         requests:          memory: "64Mi"          cpu: "250m"               limits:          memory: "128Mi"                   cpu: "500m"

Label

Label是一個鍵值對,其中鍵和值都由用戶自定義,Label可以附加在各種資源對象上,如Node、Pod、Service、RC等。一個資

源對象可以定義多個Label,同一個Label也可以被添加到任意數(shù)量的資源對象上。Label可以在定義對象時定義,也可以在對象創(chuàng)建完后動態(tài)添加或刪除。

Label示例:

"release":"stable", "environment":"dev", "tier":"backend"等等。

RC

RC是kubernetes中核心概念之一,簡單說它定義了一個期望的場景,即聲明某種pod的副本數(shù)量在任意時刻都符合某個預期值,RC定義了如下幾個部分:

1) pod期待的副本數(shù)

2) 用于篩選目標pod的Label Selector

3) 創(chuàng)建pod副本的模板(template)

RC一旦被提交到kubernetes集群后,Master節(jié)點上的Controller Manager組件就會接收到該通知,它會定期巡檢集群中存活的 pod,并確保pod數(shù)量符合RC的定義值。可以說通過RC,kubernetes實現(xiàn)了用戶應用集群的高可用性,并且大大減少了管理員在傳統(tǒng)IT環(huán)境中不得不做的諸多手工運維工作,比如編寫主機監(jiān)控腳本、應用監(jiān)控腳本、故障恢復處理腳本等

RC工作流程(假如,集群中有3個Node):

1) RC定義2個pod副本

2) 假設系統(tǒng)會在2個Node上(Node1和Node2)創(chuàng)建pod

3) 如果Node2上的pod(pod2)意外終止,這很有可能是因為Node2宕機

4) 則會創(chuàng)建一個新的pod,假設會在Node3上創(chuàng)建pod3,當然也有可能在Node1上創(chuàng)建pod3

RC中動態(tài)修改pod副本數(shù)量:

kubectl scale rc –replicas=n

利用動態(tài)修改pod的副本數(shù),可以實現(xiàn)應用的動態(tài)升級(滾動升級):

1) 以新版本的鏡像定義新的RC,但pod要和舊版本保持一致(由Label決定)

2) 新版本每增加1個pod,舊版本就減少一個pod,始終保持固定的值

3) 最終舊版本pod數(shù)為0,全部為新版本

刪除RC

kubectl delete rc

刪除RC后,RC對應的pod也會被刪除掉

Deployment

在1.2版本引入的概念,目的是為了解決pod編排問題,在內部使用了Replica Set,它和RC比較,相似度為90%以上,可以認為是RC的升級版。 跟RC比較,最大的一個特點是可以知道pod部署的進度。

Deployment示例:

  apiVersion: extensions/v1beta1   kind: Deployment   metadata:      name: frontend   spec:      replicas: 1      selector:          matchLabels:              tier: frontend          matchExpressions:              - {key: tier, operator: In, values: [frontend]}      template:          metadata:              labels:                  app: app-demo                  tier: frontend          spec:              containers:              - name: tomcat-demo                  image: tomcat                  imagePullPolicy: IfNotPresent                  ports:                  - containerPort: 8080
  kubectl create  -f tomcat-deployment.yaml   kubectl get deployment

HPA(Horizontail Pod Autoscaler)

在1.1版本,kubernetes官方發(fā)布了HPA,實現(xiàn)pod的動態(tài)擴容、縮容,它屬于一種kubernetes的資源對象。它通過追蹤分析 RC控制的所有目標pod的負載變化情況,來決定是否需要針對性地調整目標Pod的副本數(shù),這是HPA的實現(xiàn)原理。

pod負載度量指標:

1) CpuUtilizationPercentage

目標pod所有副本自身的cpu利用率平用均值。一個pod自身的cpu利用率=該pod當前cpu的使用量/pod Request值。如果某一個時刻,CPUUtilizationPercentage的值超過了80%,則判定當前的pod已經(jīng)不夠支撐業(yè)務,需要增加pod。

2) 應用程序自定義的度量指標,比如服務每秒內的請求數(shù)(TPS或QPS)

HPA示例:

  apiVerion: autosacling/v1   kind: HorizontalPodAutoscaler   metadata:      name: php-apache    namespace: default   spec:    maxReplicas: 10      minReplicas: 1      scaleTargetRef:        kind: Deployment        name: php-apache      targetCPUUtilizationPercentage: 90

說明:HPA控制的目標對象是一個名叫php-apache的Deployment里的pod副本,當cpu平均值超過90%時就會擴容,pod副本 數(shù)控制范圍是1-10.
除了以上的xml文件定義HPA外,也可以用命令行的方式來定義:

  kubectl autoscale deployment php-apache --cpu-percent=90 --min=1 --max=10

Service

Service是kubernetes中最核心的資源對象之一,Service可以理解成是微服務架構中的一個“微服務”,pod、RC、 Deployment都是為Service提供嫁衣的。

簡單講一個service本質上是一組pod組成的一個集群,前面我們說過service和pod之間是通過Label來串起來的,相同Service的 pod的Label一樣。同一個service下的所有pod是通過kube-proxy實現(xiàn)負載均衡,而每個service都會分配一個全局唯一的虛擬 ip,也叫做cluster ip。在該service整個生命周期內,cluster ip是不會改變的,而在kubernetes中還有一個dns服務,它把 service的name和cluster ip映射起來。

service示例:(文件名tomcat-service.yaml)

  apiVersion: v1   kind: Service   metadata:     name: tomcat-service   spec:       ports:      - port: 8080        selector:             tier: frontend
  kubectl create -f tomcat-service.yaml   kubectl get endpoints  //查看pod的IP地址以及端口   kubectl get svc tomcat-service -o yaml  //查看service分配的cluster ip

多端口的service

  apiVersion: v1   kind: Service metadata:      name: tomcat-service   spec:      ports:          - port: 8080              name: service-port          - port: 8005              name: shutdown-port        selector:            tier: frontend

對于cluster ip有如下限制:

1) Cluster ip無法被ping通,因為沒有實體網(wǎng)絡來響應

2) Cluster ip和Service port組成了一個具體的通信端口,單獨的Cluster ip不具備TCP/IP通信基礎,它們屬于一個封閉的空間。

3) 在kubernetes集群中,Node ip、pod ip、cluster ip之間的通信,采用的是kubernetes自己設計的一套編程方式的特殊路由規(guī)則。

要想直接和service通信,需要一個Nodeport,在service的yaml文件中定義:

  apiVersion: v1   kind: Service   metadata:    name: tomcat-service   spec:      ports:      - port: 8080        nodeport: 31002    selector:          tier: frontend

它實質上是把cluster ip的port映射到了node ip的nodeport上了

Volume(存儲卷)

Volume是pod中能夠被多個容器訪問的共享目錄,kubernetes中的volume和docker中的volume不一樣,主要有以下幾個方 面: 1)kubernetes的volume定義在pod上,然后被一個pod里的多個容器掛載到具體的目錄下 2)kubernetes的volume與pod生命周期相同,但與容器的生命周期沒關系,當容器終止或者重啟時,volume中的數(shù)據(jù)并不會 丟失 3)kubernetes支持多種類型的volume,如glusterfs,ceph等先進的分布式文件系統(tǒng)
如何定義并使用volume呢?只需要在定義pod的yaml配置文件中指定volume相關配置即可:

  template:        metadata:          labels:              app: app-demo                tier: frontend          spec:              volumes:                  - name: datavol                      emptyDir: {}              containers:              - name: tomcat-demo                 image: tomcat                  volumeMounts:                      - mountPath: /mydata-data                        name: datavol                    imagePullPolicy: IfNotPresent

說明: volume名字是datavol,類型是emptyDir,將volume掛載到容器的/mydata-data目錄下
volume的類型:

1)emptyDir 是在pod分配到node時創(chuàng)建的,初始內容為空,不需要關心它將會在宿主機(node)上的哪個目錄下,因為這是kubernetes自 動分配的一個目錄,當pod從node上移除,emptyDir上的數(shù)據(jù)也會消失。所以,這種類型的volume不適合存儲永久數(shù)據(jù),適合 存放臨時文件。
2)hostPath hostPath指定宿主機(node)上的目錄路徑,然后pod里的容器掛載該共享目錄。這樣有一個問題,如果是多個node,雖然目 錄一樣,但是數(shù)據(jù)不能做到一致,所以這個類型適合一個node的情況。
配置示例:

  volumes:    - name: "persistent-storage"      hostPath:        path: "/data"

3)gcePersistentDisk 使用Google公有云GCE提供的永久磁盤(PD)存儲volume數(shù)據(jù)。毫無疑問,使用gcePersistentDisk的前提是kubernetes的 node是基于GCE的。
配置示例:

        volumes:          - name: test-volume            gcePersistentDisk:              pdName: my-data-disk              fsType: ext4

4)awsElasticBlockStore

與GCE類似,該類型使用亞馬遜公有云提供的EBS Volume存儲數(shù)據(jù),使用它的前提是Node必須是aws EC2。

5) NFS使用NFS作為volume載體。

示例:

        volumes:          - name: "NFS"            NFS:              server: ip地址              path: "/"

6) 其他類型

iscsi flocker glusterfs

rbd

gitRepo: 從git倉庫clone一個git項目,以供pod使用 secret: 用于為pod提供加密的信息

persistent volume(PV)

PV可以理解成kubernetes集群中某個網(wǎng)絡存儲中對應的一塊存儲,它與volume類似,但有如下區(qū)別:

1) PV只能是網(wǎng)絡存儲,不屬于任何Node,但可以在每個Node上訪問到

2) PV并不是定義在pod上,而是獨立于pod之外定義

3) PV目前只有幾種類型:GCE Persistent Disk、NFS、RBD、iSCSCI、AWS ElasticBlockStore、GlusterFS

如下是NFS類型的PV定義:

  apiVersion: v1  kind: PersistentVolumemetadata:    name: pv0003  spec:    capacity:      storage: 5Gi    accessModes:      - ReadWriteOnce    nfs:      path: /somepath      server: ip  

其中accessModes是一個重要的屬性,目前有以下類型:

ReadWriteOnce: 讀寫權限,并且只能被單個Node掛載
eadOnlyMany: 只讀權限,允許被多個Node掛載

ReadWriteMany:讀寫權限,允許被多個Node掛載如果某個pod想申請某種條件的PV,首先需要定義一個PersistentVolumeClaim(PVC)對象:

  kind: persistentVolumeClaim  apiVersion: v1  metadata:    name: myclaim  spec:    accessModes:      - ReadWriteOnce    resources:      requests:        storage: 8Gi

然后在pod的vomume定義中引用上面的PVC:

  volumes:    - name: mypd      persistentVolumeClaim:        ClaimName: myclaim

Namespace(命名空間)

當kubernetes集群中存在多租戶的情況下,就需要有一種機制實現(xiàn)每個租戶的資源隔離。而namespace的目的就是為了實現(xiàn)資源隔離。

  kubectl get namespace  //查看集群所有的namespace

定義namespace:

  apiVersion: v1  kind: Namespace  metadata:    name: dev
  kubectl create -f dev-namespace.yaml  //創(chuàng)建dev namespace
  apiVersion: v1  kind: Pod  metadata:    name: busybox    namespace: dev  spec:    containers:    - image: busybox      command:        - sleep        - "500"      name: busybox

然后再定義pod,指定namespace 查看某個namespace下的pod:

  kubectl get pod --namespace=dev

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
日韩精品一区二区三区色欲av| 色多多视频在线播放| 成人av在线不卡| 国产淫片免费看| 9久久婷婷国产综合精品性色| 毛片毛片毛片毛| 久久艹国产精品| 国产v亚洲v天堂无码久久久| 亚洲视频一二三四| www.69av| 亚洲精品午夜在线观看| 嫩草影院中文字幕| 网站一区二区三区| 国产传媒久久久| 高清一区在线观看| 日本中文字幕在线视频观看| 嫩草av久久伊人妇女超级a| 国产精品12p| 久久午夜夜伦鲁鲁一区二区| 黄色网zhan| 三级在线免费看| av日韩一区二区三区| 天天操狠狠操夜夜操| 免费不卡av在线| 久久久一二三四| 99视频精品免费| 国产九九九九九| www.激情网| 午夜免费福利网站| 少妇人妻互换不带套| 18禁裸男晨勃露j毛免费观看| 天堂网在线免费观看| 北条麻妃在线观看| 日韩精品在线视频免费观看| 亚洲一区二区中文字幕在线观看| 国产福利一区视频| 日本在线xxx| 国产一区二区片| 香蕉视频色在线观看| 色噜噜狠狠一区二区| www.国产区| 欧美老熟妇喷水| 国产91在线免费| 日韩精品一区二区免费| 99精品一区二区三区的区别| 亚洲欧美自拍另类日韩| 国内外成人激情视频| 欧美 日本 亚洲| 黄色一级视频片| 九九爱精品视频| 霍思燕三级露全乳照| 久色视频在线播放| 久久久久免费看黄a片app| 成年人看的毛片| www..com日韩| 色欲av无码一区二区人妻| 成年人观看网站| 国产精品亚洲二区在线观看| 999在线免费视频| 国产91色在线观看| 在线播放av中文字幕| 日本一二三四区视频| 91成人在线视频观看| wwwwww欧美| 欧美日韩亚洲一| 毛葺葺老太做受视频| 午夜免费高清视频| 欧美成人三级在线播放| 毛片毛片毛片毛片毛| 18视频在线观看娇喘| 人妻少妇精品无码专区二区| 国产视频一视频二| 日本超碰在线观看| 浴室偷拍美女洗澡456在线| 久艹在线免费观看| 日本免费黄视频| 麻豆三级在线观看| 精品国产一区二区三区在线| 成人在线免费高清视频| 一女被多男玩喷潮视频| 日本三级黄色网址| 青青视频免费在线| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 成人亚洲精品777777大片| 日韩video| 丁香婷婷激情网| 国产制服91一区二区三区制服| www国产精品内射老熟女| 亚洲一级免费观看| 97干在线视频| 中文字幕网av| 国产欧美久久久久| 超碰超碰在线观看| 极品美女扒开粉嫩小泬| 免费成人黄色大片| av之家在线观看| 国产成人三级视频| 亚洲精品视频导航| 日韩av高清在线看片| 91丝袜超薄交口足| 亚洲国产精品毛片av不卡在线| 日韩最新中文字幕| 手机在线成人免费视频| 欧美亚洲黄色片| 亚洲黄色网址在线观看| 日本xxxx黄色| 亚洲欧洲日产国码无码久久99| 日韩精品福利片午夜免费观看| 狠狠热免费视频| 日本国产在线播放| 99er在线视频| 91嫩草国产丨精品入口麻豆| 亚洲另类第一页| 日韩视频免费在线播放| 少妇无码av无码专区在线观看| 男女h黄动漫啪啪无遮挡软件| 亚洲五月天综合| 日韩欧美在线免费观看视频| 日本a视频在线观看| 日韩精品一区二区在线视频 | 超碰在线97免费| 欧美深夜福利视频| 日韩精品一区二区在线视频 | 天天摸天天舔天天操| 日韩中文字幕二区| 国产乱子夫妻xx黑人xyx真爽| 欧美精品在欧美一区二区| 无码毛片aaa在线| 红桃一区二区三区| 男人c女人视频| 91黄色在线看| 91成人在线观看喷潮教学| 亚洲 欧美 综合 另类 中字| 成人免费在线网| 日韩av综合在线观看| 成年人网站免费视频| 中国丰满人妻videoshd | 日本a√在线观看| 国产野外作爱视频播放| 怡红院亚洲色图| 色呦呦网站入口| 大地资源网在线观看免费官网| 91精品国产毛片武则天| 国产一线二线三线女| 啊啊啊一区二区| 一路向西2在线观看| 国产又黄又猛的视频| 香蕉视频免费版| 黄页免费在线观看视频| 黄色三级视频片| 中文字幕第三区| 国产精品无码免费专区午夜| 久久久999视频| 日韩av在线中文| 国产成人一区二区三区别| 免费在线观看亚洲视频| 亚洲天堂网一区| 麻豆一区二区三区在线观看| 日韩一级片一区二区| 精品国产成人av在线免| 伊人免费视频二| 亚洲不卡中文字幕无码| 亚洲一级免费在线观看| 天天做天天躁天天躁| 久久久久久久久久久久久久国产| 亚洲三级在线观看视频| 精品无码国模私拍视频| 福利视频999| 一女被多男玩喷潮视频| 手机在线视频一区| 亚洲色成人一区二区三区小说| 在线免费看v片| 欧美牲交a欧美牲交aⅴ免费真| 亚洲av毛片在线观看| 欧美啪啪免费视频| 国产福利片一区二区| 东京热加勒比无码少妇| 手机在线视频你懂的| 亚洲三级视频网站| 欧美视频在线免费播放| 在线观看免费黄色片| 日日躁夜夜躁aaaabbbb| 日本国产在线播放| 日本天堂免费a| 天天色天天综合网| 男人透女人免费视频| 精品无码国产一区二区三区av| 伊人国产精品视频| 天天爽人人爽夜夜爽| 久久久噜噜噜www成人网| 美女av免费观看| 欧美日韩视频免费在线观看| www.日本一区| av免费网站观看| 国产精品少妇在线视频| 自慰无码一区二区三区| 国产美女作爱全过程免费视频| www.午夜色| 国产又大又长又粗又黄| 亚洲最大天堂网|