天天看點

容器服務 kubernetes 系統元件介紹1.前言2.系統元件介紹:

作者: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 認證

繼續閱讀