前言
隨著軟體架構的調整,應用部署的方式

應用部署的工具也由Ansible/Puppet/Saltstack(應用編排工具)----->Docker(應用程式容器化)----->Kubernetes集群(容器編排工具)演變;
一、Kubernetes概念
當1個容器出現了故障,如何立刻啟動另1個容器來替代當前容器,繼續對外提供服務;(無容錯能力,僅出現單點故障,既造成整個服務雪崩)
當并發量大的時候,無法動態橫向擴展容器的數量,當并發量降低時,無法動態減少容器數量;(動態擴縮)
以上這些容器管理的問題統稱為容器編排問題;
Kubernetes簡稱K8s,是一種基于容器技術的分布式應用部署方案,可以解決容器編排問題;
K8s本質是一組服務器集群,有以下優勢
- 自我修復:一旦某1個容器退出,會在1秒能重新啟動另1個容器進行替換;
- 彈性伸縮:可以根據現實需求,動態調整K8S集群中容器的數量;
- 服務發現:服務和服務直接可以通過自動發現的機制,找到自身依賴的服務;
- 負載均衡:如果1個服務系結了多個容器,那么多個容器可以自動實作該服務的負載均衡;
二、Kubernetes組件
Kubernetes由一下組件構成,協同作業完成容器編排任務;
1.Master節點
包含API Server、Scheduler、ControllerManager三個守護行程;
2.Node(worker)節點:
- Kubelet(集群代理)用于Master和Node之間的通信,Node用于運行多個Pod
- Docker容器引擎真正的啟動容器;
- Kube-proxy:管理service和pod之間的iptables通信規則
3.Pod
- Pod相當于虛擬化部署架構中的1個虛擬主機;
- 容器是應用的外殼, Pod是容器的外殼;
- Pod是K8S調動的最小單元;
- 1個Pod中可以包含多個容器,其中只有1個容器為主容器,其他容器輔助主容器完成更多功能;
- 輔助容器稱為Sidecar(邊車、摩托車挎斗);
- 在1個Pod中,容器之的存盤卷是彼此共享的;
- 通常情況下1個Pod只有1個容器;
4.LabelSelector
- 由于K8s集群中容器是可以動態調整的,所以容器的IP地址會經常發生變化,但Pod標簽是固定的, 標簽可以標記和分類Pod;
- 標簽選擇器可以幫助我們查詢到指定分類的Pod,便于我們對Pod進行批量管理;
5.NameSpace
- 1個K8s集群中可以運行幾千個Pod,Pod之間是可以直接通過網路通信的;
- 使用NameSpace名稱空間分割K8s集群中的pod,起到K8s集群中多租戶網路隔離的作用;
三、Kubernetes集群搭建
Kubernetes主要有3種搭建方式
- Minikube:用于搭建單節點Kubernetes集群的工具(開發人員學習);
- Kubeadmin:用于快速搭建Kubernetes集群(運維人員學習);
- 二進制原始碼安裝:從K8s官網下載每個組件的原始碼,依次進行安裝,此方式對于理解K8s組件組件更有效(生產環境);
參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/531473.html
標籤:其他
