k8s基础之一 k8s基础架构
k8s基础
k8s命令补全
yum install -y bash-completion source /usr/share/bash-completion/bash_completion source <(kubectl completion bash) echo "source <(kubectl completion bash)" >> ~/.bashrc
k8s架构
master节点
kube-apiserver:集群的控制中枢,各个模块之间信息交互都需要经过kube-apiserver同时呢、他也是集群管理、资源配置、整个集群安全机制管理入口。
controller-manager:集群的状态管理器,保证pod或者其他资源达到期望值,而是需要和apiserver进行通信,在需要的时候创建、更新或者删除它所管理的资源
scheduler:集群的调度中心,它会根据指定的一系列条件,选择一个或者一批最佳节点,部署我们的pod。
etcd:键值数据库,保存一些集群的信息,一般生产环境建议部署三个以上(奇数个)
node/worker/minion 节点:
kbe-proxy:负责pod之间的通信和负载均衡,将指定流量分发到后端正确的机器上。
ipvs: 监听master节点增加和删除service以及endpoint的消息,调用Netlink接口创建相应的ipvs规则。通过ipvs规则将流量转发到相应的pod
Calico: 符合cni标准的网络插件,给每个pod生成一个唯一的ip地址,并且把每个节点当做一个路由器,,可以做网络策略这个是flan做不到的。。。cilium
coreDNS: 用于k8s集群内部的serice解析,可以让pod吧servicer名称解析成ip地址。然后通过service的ip地址进行链接到对应的应用上
docker:容器引擎,对容器的管理
metrics-server:度量,采集日志
在有成百上千个service时候kube-proxy扛不住,所以引用了,cilium eBPF,目前没有经过生产环境考验
为什么使用ipvs而不使用iptables
因为iptables在规则成百上千的时候,性能会急剧下降。