網(wǎng)站建設的單可以刷嗎磁力多多
文章目錄
- Kubernetes概念
- Kubernetes核心概念
- 集群
- pod
- ConfigMap
- Kubernetes架構
- master節(jié)點的組件
- worker節(jié)點組件
- Kubernetes網(wǎng)絡架構
- 內部網(wǎng)絡
- 外部網(wǎng)絡
- k8s各端口含義
Kubernetes概念
K8S就是Kubernetes,Kubernetes首字母為K,末尾為s,中間一共有8個字母,所以簡稱K8s。
它是一個為容器化應用提供集群部署和管理的開源工具,由 Google 開發(fā)。通過k8s可以使用配置文件輕松管理上千臺機器。
k8s的部署配置文件和docker的dockerfile很類似,其內容描述了整個部署過程。
Kubernetes核心概念
集群
由多個節(jié)點組成的、共同對外提供服務的一個節(jié)點組,可添加或刪除節(jié)點
pod
K8S 調度、管理的最小單位,一個 Pod 可以包含一個或多個容器,每個 Pod 有自己的虛擬IP。一個工作節(jié)點可以有多個 pod,主節(jié)點會考量負載自動調度 pod 到哪個節(jié)點運行。
如果一組應用緊耦合,那么他們應該在一個pod中編排
ConfigMap
微服務上線時根據(jù)不同服務需要有一些可變配置,為了實現(xiàn)對微服務各個節(jié)點的靈活配置,k8s內置支持微服務的配置configmap,將配置信息寫入configmap,然后configmap以環(huán)境變量的方式注入到pod中,pod中的容器可以訪問這些配置。
Kubernetes架構
架構中分為master/worker兩個部分
master節(jié)點的組件
- etcd: 負責存儲k8s集群的狀態(tài)數(shù)據(jù)、節(jié)點數(shù)據(jù)等
- API server: 是操作etcd的唯一接口
- Scheduler: 負責資源調度
- Controler Manager: 集群狀態(tài)的協(xié)調控制者,維護集群狀態(tài)
worker節(jié)點組件
-
Controller Runtime: 下載鏡像和容器的組件
-
kubelet: 與master節(jié)點上API server交互,負責管理worker節(jié)點上的組件,運行在集群中每個節(jié)點node上。注意他是一個進程而不是組件。
-
pod: K8S 調度、管理的最小單位,一個 Pod 可以包含一個或多個容器,每個 Pod 有自己的虛擬IP。一個工作節(jié)點可以有多個 pod,主節(jié)點會考量負載自動調度 pod 到哪個節(jié)點運行。
-
kube-proxy: 對pod進行尋址和負載均衡
用戶操作 k8s 集群一般是通過 kubectl命令行工具或者 dashboard;
Pod 之間進行通訊是通過集群內部的覆蓋網(wǎng)絡 Overlay Network,外部流量想要進入集群訪問 Pod 則是通過負載均衡 Load Balander 設備進行。
Kubernetes網(wǎng)絡架構
k8s有四層網(wǎng)絡,從上到下分別是
- 外部接入網(wǎng)絡(NodePort/LoadBalancer/Ingress)
- service網(wǎng)絡
- pod網(wǎng)絡
- node節(jié)點網(wǎng)絡
內部網(wǎng)絡
節(jié)點網(wǎng)絡用來保證master和worker,以及worker節(jié)點之間能夠做正常尋址和通訊
pod之間通過pod網(wǎng)絡(在節(jié)點網(wǎng)絡之上)尋址和通信
不同節(jié)點之間的pod訪問可以通過路由或者其他方式訪問;節(jié)點的ip可能會隨著關機掛起而改變,需要service網(wǎng)絡維護。
worker節(jié)點中的kubelet將信息傳給master節(jié)點中的etcd來實現(xiàn)服務注冊。
kube-DNS和kube-proxy獲取etcd中的信息來實現(xiàn)服務發(fā)現(xiàn)。
kube-DNS保存serviceName->ClusterIP的信息。(service服務的ip叫ClusterIp)
ClusterIP并不是一成不變的,ServiceName是唯一的。
Kube-Proxy保存CluserIP->PodIP的信息。這樣兩層可以實現(xiàn)POD 在集群之間的網(wǎng)絡連接。kube-proxy是集群中每個節(jié)點node上運行的網(wǎng)絡代理。
外部網(wǎng)絡
- NodePort
將service暴露在節(jié)點網(wǎng)絡上
- LoadBalancer
將service暴露在節(jié)點網(wǎng)絡上+負載均衡
- Ingress
如果需要暴露在節(jié)點網(wǎng)絡中的服務有很多,僅僅使用 load balancer 的話成本是很高的。Ingress 可以等價于反向代理或者網(wǎng)關,它的主要作用就是反向路由,它可以將多個 k8s 內部的服務同時暴露出去但僅需一個 load balancer。Ingress 還有一些其他功能如動態(tài)路由更新、安全認證、日志監(jiān)控等。
k8s各端口含義
- port: 是k8s集群內部訪問service的端口,即通過clusterIP: port可以訪問到某個service
- nodePort: 是外部訪問k8s集群中service的端口,通過nodeIP: nodePort可以從外部訪問到某個service
- targetPort: 是pod的端口,從port和nodePort來的流量經(jīng)過kube-proxy流入到后端pod的targetPort上,最后進入容器
- containerPort: 是pod內部容器的端口,targetPort映射到containerPort