master----------------
etcd 消息中間件,儲存了整個叢集的狀态;
apiserver 是整個系統的對外接口,并提供認證、授權、通路控制、API注冊和 發現等機制;
controller manager 負責維護叢集的狀态,比如故障檢測、自動擴充、滾動更新等,負責管理控制器,包括 endpoint-controller(重新整理服務和 pod 的關聯資訊)和 replication-controller(維護某個 pod 的複制為配置的數值)
scheduler 負責資源的排程,按照預定的排程政策将Pod排程到相應的機器上;
slave-------------------
kubelet 是工作節點執行操作的 agent,負責具體的容器生命周期管理,根據從資料庫中擷取的資訊來管理容器,并上報 pod 運作狀态等,同時也負責Volume(CVI)和網絡(CNI) 的管理;
Container runtime 負責鏡像管理以及Pod和容器的真正運作(CRI);
kube-proxy 負責為Service提供cluster内部的服務發現和負載均衡,網絡代理轉發,是一個簡單的網絡通路代理,同時也是一個 Load Balancer。它負責将通路到某個服務的請求具體配置設定給工作節點上的 Pod
Pod ( 節點) 是一組緊密關聯的容器集合,排程的基本機關。Pod的設計理念是支援多個容器在一個Pod中共享網絡和 檔案系統,可以通過程序間通信和檔案共享這種簡單高效的方式組合完成服務。
Node(容器組) Pod真正運作的主機,可以實體機,也可以是虛拟機。為了管理Pod,每個Node 節點上至少要運作container runtime(比如docker或者rkt)、 kubelet 和 kube- proxy 服務。
Replication Controller 是用來通過label關聯管理Pod的,每個RC由一個或多個Pod組成
Label 是用于區分Pod、Service、RC的key/value鍵值對,Pod、Service、RC可以有多個label,但是每個label的key隻能對應一個value,整個系統都是通過Label進行關聯,得到真正需要操作的目标
Service k8s的最小操作單元,是定義在叢集中一組運作Pod集合的抽象資源,對外為一個單一的通路接口,配置設定一個唯一的IP
kubectl 用戶端指令行工具,将接收的指令,發送給kube-apiserver,作為對整個平台操作的入口
Replication Controller 負責維持Pods中的正常運作的Pod的個數
Endpoints Controller 負責維持Pods和Service的關聯關系
Node Controller 負責整個系統中node up 或down的狀态的響應和通知
Service Account & Token Controllers 負責為新的命名空間建立預設的賬号和API通路的Token
flannel IP位址的配置設定
accessing_the_api 端口,IP 位址和代理的防火牆規則。
ux 使用者可以通過 web 界面操作 Kubernetes。
CNI Container Network Interface的簡稱
Replication Controller rc 來部署、更新Pod
Replica Set rs 下一代Replication Controller
Deployment 更加友善的管理Pod和Replica Set
節點 在 Kubernetes 中,節點是實際工作的點,節點可以是虛拟機或者實體機器,依賴于一個叢集環境。每個節點都有一些必要的服務以運作容器組,并且它們都可以通過主節點來管理。必要服務包括 Docker,kubelet 和代理服務
容器狀态 節點周期:Pending,Running,Terminated。節點狀态:NodeReachable 表示叢集可達,NodeReady 表示 kubelet 傳回 Status Ok 并且 HTTP 狀态檢查健康。
節點管理 節點并非 Kubernetes 建立,而是由雲平台建立,或者就是實體機器、虛拟機。在 Kubernetes 中,節點僅僅是一條記錄,節點建立之後,Kubernetes 會檢查其是否可用。
節點控制 在 Kubernetes 主節點中,節點控制器是用來管理節點的元件。主要包含:叢集範圍内節點同步,單節點生命周期管理。可以使用 kubectl 來一條一條的添加節點。
容器組 容器組是建立,排程,管理的最小機關。 一個容器組使用相同的 Docker 容器并共享卷(挂載點)。一個容器組是一個特定應用的打包集合,包含一個或多個容器
容器組管理 容器組是一個應用管理和部署的高層次抽象,同時也是一組容器的接口。容器組是部署、水準放縮的最小機關
容器組的生命狀态 包括若幹狀态值:pending、running、succeeded(所有的容器都正常退出。)、failed。
1,安裝docker
<code>yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum -y install docker-ce --nobest</code>
2,安裝 kubelet kubeadm kubectl
3,修改核心的運作參數
4,配置 kubelet(rpm -ql kubelet 檢視具體)
5,部署 (master)
<code>kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --pod-network-cidr 10.244.0.0/16 --v 5 --ignore-preflight-errors=all</code>
部署 (slave)
<code>kubeadm join 192.168.116.200:6443 --token rzmegv.g8k9kq60ectkrgov --discovery-token-ca-cert-hash sha256:a32c8299024f36a395b28ed58804dc41737d70ba544b3ece82450b57b81a9074</code>
6,部署 CNI (flannel)
7,檢視
`scp /etc/kubernetes/admin.conf 192.168.116.201:/etc/kubernetes/
master 的 admin.conf`
拷貝到各個節點
kubectl get nodes 檢視節點
kubectl get all -A 檢視啟動的服務
8,部署 Dashboard(儀表盤)
修改
YAML bind常用類型 Endpoints、 Service、 Deployment、Pod
1、 Endpoints 可以把外部的連結到k8s系統中,如下可以把199.199.199.199:3306 連結到k8s内部
Service部署一個内部虛拟IP,其他deployment可以連結。
2,Deployment 控制器适合部署無狀态的應用服務,用來管理pod和replicaset,具有上線部署、副本設定、滾動更新、復原等功能,還可提供聲明式更新