第8章 瞭解kubernets機理



控制組件狀態(etcd--api---[scheduler,controller-manager])

 kubectl get componentstatus

NAME                 STATUS    MESSAGE             ERROR

controller-manager   Healthy   ok

scheduler            Healthy   ok

etcd-0               Healthy   {"health":"true"}


工作組件(api--[kube-proxy,kubelet]---docker)


各組件以POD運行

 kubectl get pod -o custom-columns=POD:metadata.name,NODE:spec.nodeName --sort-by spec.nodeName -n kube-system

POD                                   NODE

coredns-6967fb4995-c9jlr              minikube

coredns-6967fb4995-f2zzv              minikube

etcd-minikube                         minikube

kube-addon-manager-minikube           minikube

kube-apiserver-minikube               minikube

kube-controller-manager-minikube      minikube

kube-proxy-f6ctq                      minikube

kube-scheduler-minikube               minikube

kubernetes-dashboard-95564f4f-8zvs6   minikube

storage-provisioner                   minikube


資源元數據如何存儲在etcd存儲

etcdctl ls /registry

etcdctl ls /registry/pods

etcdctl ls /registry/pods/default (每個條目對應一個pod的鍵值對)

etcdctl get /regis七ry --prefix = true

ecdct1 get /registry/pods/default/kubia-159041347-wtGga

 etcd 實例數量應該是奇數RAFT一致性算法要求集羣大部分(法定數量)節點參與才能進行到下 一 個狀態


API服務器:認證--授權--驗證--監聽

客戶端如kubectl通過http與API進行通信

調度器:爲新建的pod分配節點

調度算法過濾所有節點選出最優,高級高度依賴大量因子

控制器管理器:通過種控制器將實際狀態調整爲期望狀態

replication,replicaset,daemonset, job,deployment,statefulset,node,service,endpoints,namespace,persistentvalue


kubelet:在api服務器創建node資源註冊該節點,分配pod並運行容器

kubelet-proxy:確保對服務IP端口的連接到達某個pod


kubectl----api服務器(deployments,replicasets,pods)---控制器管理器---調度器---kubelet----docker

Deployment控制器生成ReplicaSet---ReplicaSet控制器創建pod資源---調度器分配節點給新創建的pod

觀察羣集事件kubectl get events --watch

[root@mes2 ~]# kubectl run nginx --image=ningx

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

deployment.apps/nginx created

[root@mes2 ~]#kubectl get events --watch

0s    Normal   ScalingReplicaSet   deployment/nginx   Scaled up replica set nginx-879cf7b8c to 1

0s    Normal   SuccessfulCreate    replicaset/nginx-879cf7b8c   Created pod: nginx-879cf7b8c-fpfzn

0s    Normal   Scheduled           pod/nginx-879cf7b8c-fpfzn    Successfully assigned default/nginx-879cf7b8c-fpfzn to minikube

暫停容器收納pod所有容器共享一個命名空間


跨pod網絡需要無NAT

基礎設施容器啓動前創建一虛擬ethernet對(容器命名空間eth0,主機命名空間veth)

報文通過:A容器veth pair---網關---A節點適配器---B節點適配器---網關---B容器veth pir

容器網絡接口(CNI)允許Kubemetes可配置使用任何CNI插件

當服務創建時api服務器通知kubelet-proxy會讓該服務在該節點可尋址(重定向到指定pod)


應用高可用:1運行多實例,2領導選舉機制確保一個有效

控制平面高可用:etcd集羣;api服務器多實例;調度器領導選舉

樂觀併發保證多個實例寫名字到資源僅一個成功即領導者

[root@mes2 ~]# kubectl  get  endpoints  kube-scheduler  -n  kube-system  -o  yaml

apiVersion: v1

kind: Endpoints

metadata:

  annotations:

    control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"mes2_b6640f77-54bb-4d6b-ae5f-c662a6e2cd53","leaseDurationSeconds":15,"acquireTime":"2020-03-20T08:49:12Z","renewTime":"2020-04-10T08:25:18Z","leaderTransitions":3}'

  creationTimestamp: "2019-08-23T09:37:46Z"

  name: kube-scheduler

  namespace: kube-system

  resourceVersion: "24246334"

  selfLink: /api/v1/namespaces/kube-system/endpoints/kube-scheduler

  uid: 795716fa-6b62-4db0-a65d-0e7d6d01e1db








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章