K8s世界中的ip地址

前言:K8s作为一个容器集群管理工具,首先要灵活的解决容器ip的问题。从K8s的组件看,Node、Service、Pod 的ip地址如何生成和管理就是首先要解决的问题。

名词解释

  • CIDR 集群网络的IP范围
  • CRI 容器运行时接口
  • CNI 一个规范,可为Linux容器提供基于通用插件的联网解决方案

Service IP如何分配

图片

在 Service 创建的请求中,可以通过设置 spec.clusterIP 字段来指定自己的集群 IP 地址。比如,希望替换一个已经已存在的 DNS 条目,或者遗留系统已经配置了一个固定的 IP 且很难重新配置。用户选择的 IP 地址必须合法,并且这个 IP 地址在 service-cluster-ip-range CIDR 范围内,这对 API Server 来说是通过一个标识来指定的。如果 IP 地址不合法,API Server 会返回 HTTP 状态码 422,表示值不合法。

Pod IP如何分配

Kube-controller-manager为每个节点分配一个pod CIDR。从podCIDR中的子网值中为节点上的Pod分配IP地址。由于所有节点上的podCIDR是不相交的子网,因此它允许为每个pod分配唯一的IP地址。

Kubernetes集群管理员可配置和安装kubelet,容器运行时,网络提供商代理,并在每个节点上分发CNI插件。网络提供商代理启动时,将生成CNI配置。在节点上调度Pod后,kubelet会调用CRI插件来创建Pod。如果是Containerd,则Containered CRI插件会调用CNI配置中指定的CNI插件来配置Pod网络。所有这些都会使Pod获得IP地址。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/206887.html

(0)
联系我们
联系我们
分享本页
返回顶部