容器服務 kubernetes 系統組件介紹

1.前言

 容器服務建立 kubernetes 集羣后,系統默認建立一批 kubernetes 集羣的系統組件與進程,理解他們的部署配置方式和含義,是優化集羣,排除 k8s 集羣故障的技術基礎之一。

2.系統組件介紹:

2.1 Master 組件

2.1.1 kube-apiserver

 基於generic server 上封裝的一層官方默認的 apiserver:

  • 提供了集羣管理的REST API接口(包括認證授權、數據校驗以及集羣狀態變更);
  • 提供其他模塊之間的數據交互和通信的樞紐  (其他模塊通過API Server查詢或修改數據,只有API Server才直接操作etcd);
  • 資源配額控制的入口,完備的集羣安全機制,對相關集羣對象增刪查改等操作。

部署方式
 kube-apiserver 以 Static pod 靜態POD 方式部署,其配置的 yaml 在 master 機器的/etc/kubernetes/manifests/kube-apiserver.yaml,修改該設置,保存後 k8s 集羣會自動重啓部署 apiserver pod 到Master 機器上。

# ssh 登錄 master 機器
cd /etc/kubernetes/manifests
# 查看 yaml 文件
vi /etc/kubernetes/manifests/kube-apiserver.yaml

服務暴露方式
 通過 SLB 負載均衡暴露服務,slb 後端服務器爲 apiserver 所在的3臺 Master 機器,偵聽 pod 提供的6443 https 服務端口。

2.1.2 ETCD:

 用來保存 k8s 集羣所有對象的狀態信息和網絡信息。
部署方式
 Master 機器上啓動進程, etcd 在阿里雲容器服務中以系統 Service 方式部署。
服務暴露
 2379端口

2.1.3 kube-scheduler:

 kubernetes 調度器,調度 pod 到 ECS 的部署。
部署方式
 靜態 POD方式部署,其配置的 yaml 在 master 機器的/etc/kubernetes/manifests/kube- scheduler.yaml,修改該設置,保存後 k8s 集羣會自動重啓部署。

# ssh 登錄 master 機器
cd /etc/kubernetes/manifests
# 查看 yaml 文件
vi /etc/kubernetes/manifests/kube-scheduler.yaml

服務暴露方式
http 10251 端口提供服務

2.1.4 kube-controller-manager:

 k8s 資源對象管理控制器,包括 默認啓動的Node Controller, Daemon Controller, Deployment Controller 以及阿里雲擴展的相關 Controller 控制器 等;

部署方式
 靜態 POD方式部署,其配置的 yaml 在 master 機器的/etc/kubernetes/manifests/kube-controller-manager.yaml,修改該設置,保存後 k8s 集羣會自動重啓部署。

# ssh 登錄 master 機器
cd /etc/kubernetes/manifests
# 查看 yaml 文件
vi /etc/kubernetes/manifests/kube-controller-manager.yaml

服務暴露方式
 http 10252 端口提供服務

2.1.5 cloud-controller-manager:

 雲資源管理控制器,實現 Cloud provider,用以雲資源的管理。
部署方式
 Daemonset 守護進程方式部署,部署在 Master 機器上,使用 。

# 查看部署文件
kubectl get daemonset cloud-controller-manager -o=yaml -n kube-system
# 查看 pod
kubectl get pods -n kube-system|grep cloud-controller-manager

服務暴露方式
http 10252 端口提供服務

2.2 Node 組件

2.2.1 kubelet:

 kubelet 服務進程,每個 node 上運行該節點,向 Master 註冊節點信息。

部署方式
 節點上運行該服務進程
暴露服務
 包括 10250 端口的認證 API、4194 端口的 cAdvisor API、10255 端口的只讀 API 以及 10248 端口的健康檢查 API

2.2.2 kube-proxy:

 網絡通信組件
部署方式
Daemonset 守護進程方式部署,部署在 Master,Node 機器上都有使用 。

# 查看部署文件
kubectl get daemonset kube-proxy-master -o=yaml -n kube-system
# 查看 pod
kubectl get pods -n kube-system|grep kube-proxy-master

2.3 附加組件

名稱 部署形式 提供的服務 備註
kube-DNS(Core-DNS) Deployment 端口:53 域名解析服務 建立擴容至多個 POD 副本
nginx ingress controller/default-http-backend Deployment Nginx http 七層協議路由與 http 後臺服務 端口:80,443 對於 http 服務訪問量高的必須擴容或者獨立另外部署
heapster & influxdb Deployment 80-->8082 pod 雲監控組件:
influxdb爲存儲監控數據的時序數據庫;
heapster 爲容器集羣監控和性能分析工具,HPA、Dashborad、Kubectl top都依賴於heapster收集的數據。
坑:注意 influxdb 的內存做限制,防止其內存無限增長。
kube-flannel Daemonset 網絡設施進程
logtail Daemonset 日誌採集守護進程
flexvolume Daemonset volumen 磁盤管理進程
tiller-deploy Deployment port:44134 helm工具的服務端
metrics-server Deployment 443 功能通 Heapster,採集容器監控與性能數據。
alibaba-log-controller Deployment cloud-controller-manager 擴展 日誌管理控制器
alicloud-application-controller Deployment cloud-controller-manager 擴展 應用管理控制器
alicloud-disk-controller Deployment cloud-controller-manager 擴展 磁盤存儲控制器
alicloud-monitor-controller Deployment cloud-controller-manager 擴展 雲監控
aliyun-acr-credential-helper Deployment cloud-controller-manager 擴展 認證
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章