作者:joezxh
鏡像下載下傳、域名解析、時間同步請點選
阿裡巴巴開源鏡像站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 | Nginx http 七層協定路由與 http 背景服務 端口:80,443 | 對于 http 服務通路量高的必須擴容或者獨立另外部署 | |
heapster & influxdb | 80-->8082 | pod 雲監控元件: influxdb為存儲監控資料的時序資料庫; heapster 為容器叢集監控和性能分析工具,HPA、Dashborad、Kubectl top都依賴于heapster收集的資料。 坑:注意 influxdb 的記憶體做限制,防止其記憶體無限增長。 | |
kube-flannel | Daemonset | 網絡設施程序 | |
logtail | 日志采集守護程序 | ||
flexvolume | volumen 磁盤管理程序 | ||
tiller-deploy | port:44134 | helm工具的服務端 | |
metrics-server | 443 | 功能通 Heapster,采集容器監控與性能資料。 | |
alibaba-log-controller | cloud-controller-manager 擴充 | 日志管理控制器 | |
alicloud-application-controller | 應用管理控制器 | ||
alicloud-disk-controller | 磁盤存儲控制器 | ||
alicloud-monitor-controller | 雲監控 | ||
aliyun-acr-credential-helper | 認證 |
“ 提供全面,高效和穩定的系統鏡像、應用軟體下載下傳、域名解析和時間同步服務。”