k8s 组件与网络

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权限控制
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。