k8s 组件与网络
2020-05-23 本文已影响0人
yuan_dongj
K8S架构
k8s给用户提供两种操作,kubectl与restful接口。这两个方式都使用api server与集群打交道。
master节点:api server是集群内部的大内总管,scheduler通过api server来完成pod调度分配,replication controller通过api server来保证pod副本达到期望值。
k8s架构集群内所有的重要数据都持久化在etcd上。
node节点:kubelet直接与容器打交道,创建管理pod。kube proxy代理pod服务,定义iptables,实现service到pod的请求转发。
k8s架构
K8S网络通信
K8S集群内部拥有扁平式的网络通信,Flannel让集群中的不同节点创建的docker容器都具有全局唯一的IP,docker IP与物理机IP在etcd上存储映射。
Flannel.png
同一个pod内的多个容器:localhost
同一个宿主机上的pod:Flannel的Docker0网桥
不同宿主机上的pod:通过Flannel将pod ip与Node ip进行关联,通过这个关联可以让pod进行互相访问。pod1 -> docker0 -> node1网卡 -> node2网卡 -> docker0 -> pod2。
pod到外网:pod转发数据包到宿主机网卡,向外网发送请求。
外网到pod:service
K8S资源类型
- pod:k8s编排调度的最小单元
- controller:控制pod的状态、行为、副本数量
- service:pod对外的抽象,提供统一入口与负载均衡
- 存储:数据的持久化
- 集群调度:控制pod被调度到集群中的哪一节点
- 安全:针对开发人员与运维人员的RBAC权限控制