k8s集群一般由master节点、node节点、etcd数据库、独立存储组成。
生产环境总,master节台至少有3台,etcd可以安装在单独的服务器上,也可以安装在master节点上。etcd是保存集群状态的数据库。
k8s调度的最小逻辑单元是pod,而pod由一个或多个业务容器和一个根容器(Pause 容器)组成,主要有4类pod:
1、kube-system空间内的系统pod
2、在master上手动创建的pod
3、在master上由各控制器自动创建的pod
4、在node上手动创建的不受master管理的静态pod
master节点上的主要组件包括:
1、kube-apiserver:集群控制的入口,提供 HTTP REST 服务
2、kube-controller-manager:Kubernetes 集群中所有资源对象的自动化控制中心
3、kube-scheduler:负责 Pod 的调度
4、etcd数据库(也可以安装在单独的服务器上)
node节点上的主要组件包括:
1、kubelet:负责 Pod 的创建、启动、监控、重启、销毁等工作,同时与 Master 节点协作
2、kube-proxy:实现 Kubernetes Service 的通信和负载均衡
3、容器引擎(Container runtime)如docker
所有节点需要安装的插件有:
1、域名解析插件coredns
2、网络插件如flannel
Controller Manager管理的控制器有多个:
1、pod控制器
2、node控制器
3、namespace控制器
4、service控制器
5、endpoint控制器
6、resourcequota控制器等
pod控制器分类:
1、ReplicationController
2、ReplicaSet
3、Deployment
4、StatefulSet
5、DaemonSet
6、Job,Cronjob
7、HPA
k8s中的资源对象包括:
1、工作负载类:pod及pod控制器
2、发现和负载均衡类:service,endpoint,ingress
3、配置和存储类:volume,configmap
4、集群类:namespace,node,role,clusterrole,rolebinding,clusterrolebinding
5、元数据类:HPA,pod模板,limitrange
k8s中有3层网络:
1、节点网络
2、service网络(集群网络)
3、pod网络
k8s中的通信:
1、同一个pod内的容器间的通信
2、各pod之间的通信
3、pod和service之间的通信
4、外部client和pod之间的通信