您好,登錄后才能下訂單哦!
kubernetes簡介
kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。是一個開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單并且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。
Kubelet是Kubernetes中最主要的控制器,它是Pod和Node API的主要實現者,Kubelet負責驅動容器執行層。在Kubernetes中,應用容器彼此是隔離的,并且與運行其的主機也是隔離的,這是對應用進行獨立解耦管理的關鍵點。
Controller Manager:負責管理集群的各種資源,保證資源處于預期的狀態。它由多種Controller組成,包括Replication Controller、Endpoints Controller.
Namespace Controller、Serviceaccounts Controller等等。
Etcd:負責保存k8s集群的配置信息和各種資源的狀態信息。當數據發生變化時,etcd會快速的通知k8s相關組件。第三方組件,它有可替換方案。Consul、 zookeeper
Pod: k8s集群的最小組成單位。一個Pod內,可以運行一個或多個容器。大多數情況下,一個Pod內只有一個Container容器。
Flanner:是k8s集群網路方案,可以保證Pod的跨主機通信。第三方解決方案,也有替換方案。
查看應用在哪個節點
[root@master ~]# kubectl get pod --all-namespaces
查看應用在哪個節點的詳細信息
[root@master ~]# kubectl get pod --all-namespaces -o wide
Kubeler:他是Node的agent(代理),當Scheduler確定某個Node上運行Pod之后,會將Pod的具體配置信息發送給該節點的Kubelet,Kubeler會根據這些信息創建和運行容器,并向Master報告運行狀態。
Kube-proxy:負責將訪問service的TCP/UDP數據流轉發到后端的容器。如果有多個副本,kube-proxy會實現負載均衡。
運行一個例子:三臺都導入httpd鏡像導成docker鏡像
創建一個deployment資源對象。Pod控制器。
[root@master ~]# kubectl run test-web --image=httpd --replicas=2
查看節點:
[root@master ~]# kubectl get deployments.
簡寫:
[root@master ~]# kubectl get deploy
[root@master ~]# kubectl get pod
哪臺dang掉重啟kuelet:
[root@master ~]# systemctl restart kubelet
[root@master ~]# kubectl get pod -o wide
刪除節點:
[root@master ~]# kubectl delete pod test-web-5b56bdff65-j6g75
還是兩個:這就是控制器的原因
分析各個組件的作用以及架構工作流程:
1)kubectl發送部署請求到API server
2)API server 通知Controller Manager創建一個Deployment資源
3)Scheduler執行調度任務,將兩個副本Pod分發到node01和node02上
4)node01和node02上的kubelet在各自節點上創建并運行Pod。
補充:
1.應用的配置和當前的狀態信息保存在etcd中,執行kubectl get pod時API server會從etcd中讀取這些數據。
2.flannel回味每個Pod分配一個IP。但此時沒有創建Service資源,目前kube-proxy還沒有參與進來。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。