Master
组件可以在集群中任何节点上运行,简单起见,通常子一台VM机器启动所有master
组件,并且不会在次VM机器上运行用户容器。 参考高可用群集构建multi-master-VM
kube-apiserver
用于暴露Kubernetes API
。
任何的资源请求/调用操作都是通过
kube-apiserver
提供的接口进行。—参考高可用群集
ETCD
提供的默认存储系统,保存所有集群数据,使用时需要为
etcd
数据提供备份计划
kube-controller-manager
:运行管理控制器运行管理控制器,他们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,他们都被编译为单个二进制文件,并在单个进程中运行,
Endpoints
对象(即连接Services&Pods
)Service Account
和Token
控制器:位新的Namespace
创建默认账户访问API Token
cloud-controller-manager
Kubernets
版本1.6中引入的,还是Alpha
的功能--cloud-providerflag
设置为external
启动kube-controller-manager
,来禁用控制器循环cloud -controller-manager
具体功能:
kube-scheduler
监视新创建没有分配到
Node
的pod
,为Pod
选择一个Node
。
addons
是实现集群
Pod
和Services
功能的Pod
由Deployments
,ReplicationController
等进行管理。Namesace
插件对象是在Kude-dydtem Namespace
中创建
DNS
虽然不严格要求使用插件,但
Kubernetes
集群都应该具有集群DNS
。
群集
DNS
是一个DNS
服务器,能够为Kubernetes services
提供DNS
记录。
由
Kubernetes
启动的容器自动将这个DNS
服务器包含在他们的DNS searches
中。
kube-ui
提供集群状态基础信息查看
容器资源监控提供一个UI浏览器监控数据
负责保存容器日志,搜索/查看日志
Node
)组件–提供k8s
运行时环境,以及维护Pod
kubelet
kubelet
是主要的节点代理,它会监视己分配给节点的Pod
,具体功能:
Pod
所需的volume
Pod
的Secrets
Pod
中运行的docker
(或experimentally
,rkt
)容器。kube-proxy
通过在主机上维护网络规则并执行连接转发来实现
K8S
服务抽象
docker
用来运行容器
RKT
(了解即可)运行容器,作为docker工具的替代方案
supervisord
(了解即可)轻量级的监控系统,用于保障
Kubelet
和docker
运行
fluentd
(了解即可)是一个守护进程,可提供
cluster-level logging
etcd
服务master
)节点
kube-apiserver
服务kube-controller-manager
服务kube-scheduler
服务node
)节点
kube-kubelet
服务kube-proxy
服务CLI
客户端
kubectl
CNI
网络插件→flannel/calico
coredns
traefik
GUI
管理插件→Dashboard
kubernetes
优势Pod/Pod
控制器Pod
Pod
是k8s
里能够运行的最小的逻辑单元(原子单元)Pod
里面可以运行多个容器,他们共享UTS +NET+IPC
名称空间pod
理解为豌豆荚,而同一种Pod
内的每个容器都是一颗颗豌豆Pod
里运行多个容器,又叫:边车(sidecar
)模式Pod
控制器Pod
控制器是Pod
启动的一种模板,用来保证在k8s
里启动的Pod
应始终按照人门预期的运行(副本数,生命周期。健康状态检测)k8s
内提供了众多的pod
控制器,常用的有以下几种:
Deployment
DaemonSet
ResplicaSet
StatfulSet
Job
Cronjob
Name/Namespace
Name
k8s
内部,使用‘资源’来定义每一种逻辑概念(功能),故每种资源,都应该有自己的名称api
版本(apiVersion
)类别(Kind
),元数据(metadata
)、定义清单(spec
)、状态(staus
)等配置信息Namespace
k8s
内各种‘资源’的方法,这就是名称空间k8s
内部的虚拟集群组k8s
的名称空间,使得集群管理员能够更好的对交付到k8s
里的服务进行分类管理和浏览k8s
里默认存在的名称空间有:default,kube-system,kube-public
k8s
里特点资源要带上相应的名称空间Label/Label
选择器Label
:标签key=value
Label
选择器matchLalels
matchExpressions
Servie/Ingress
Service
K8S
的世界里,虽然每个Pod
都会被分配一个单独的ip
地址,但这个ip
地址会随着Pod
的销毁而消失Service
(服务)就是用来解决这个问题的核心概念Service
可以看作一组提供相同服务的Pod
的对外访问接口Service
作用于那些Pod
是通过标签来定义的Ingress
Ingress
是K8s
集群里工作在OSI
网络参考模型下,第七层的应用,对外暴露的接口Service
只能进行L4
流量调度,表现形式是ip+port
Ingress
则可以调度不同业务域,不同URL
访问路径的业务流量k8s
集群前准备工作Master
—大脑API Server
: 整个系统的对外接口,供客户端使用和其他的组件调用,相当于 营业厅Scheduler
:负责对集群内部的资源进行调度,相当于 调度室 将pod
调度到相应的机器上Controller manager
:负责管控控制器,相当于 大总管etcd
主要负责存储各个woker
节点的状态和其它相关数据,与数据库通信Node/worker
—多个 劳动者docker
创建容器kubelet
主要负责监视指派到它所在node
上的pod
,包括创建,修改,监控,删除等 维护容器的生命周期,负责volume
(CVI
)和网络(CNI
)的管理kube-proxy
主要负责为pod
对象提供代理fluentd
主要负责日志收集,存储与查询kube-dns
(可选)pod
Deployment
部署docker
中的镜像image
,也就是容器(pods
)实例的模板,容器实例时根据deploy
创建出来的,在deployment
对象中会写明容器的镜像,容器的版本没人气要部署的数量等信息pods
是kubernetes
中的最小管理单元,pods
和docker
中的容器可以理解为包含关系,在pods
中可以包含有多个docker
容器我们可以把一个
pod
比作一个豌豆荚,里面一颗颗的豌豆就是容器,其中会有一颗豌豆是pod
派进去的监工:kube-proxy
sercice
是一个对象,这个对象有自己的ip
,也就是clusterip
,可以理解为就是下层服务的负载均衡service
,外网都是无法直接访问的,ingress
就可以通过一个负载ip
与kubernetes
集群内部进行通信,一般会和service
对象进行配合使用confgimap
中,,项目中的配置使用相应的变量名就可以读取相应的变量值本文地址:https://blog.csdn.net/wuzeipero/article/details/111036173