这里是我自己写的一个 “小白学习 kubernetes” 的一个目录导航!跟我一样的小白可以跟着导航一起进行学习:

 
kubernetes 学习导航:
【因为我是刚接触k8s,通过查阅资料、看视频等整理的,哪里有误希望大佬多多指点,感谢!】


 

前言:

 
        云计算的核心是 —— 虚拟化技术,而网络虚拟化技术又是其重要的组成部分;用于在物理网络上 虚拟 多个 相互隔离 的虚拟网络

①、实现网络资源切片;
②、提高网络资源利用率;
③、实现弹性化网络。

        kubernetes 作为容器云技术栈中的容器编排组件,必然需要在多租户(NameSpace)的基础上实现弹性网络管理,这也是 “基础设施即代码” 的要求之一!

 


 

k8s 网络中的通信类型:

①、同一 Pod 内 Container 间的通信

②、各 Pod 之间的通信

③、Pod 与 Service 间的通信

④、集群外部流量 与 Service之间的通信

        k8s 为 “Pod 和 Service”对象分别使用了各自的专用网络!“Pod” 的网络由 kubernetes 的网络插件配置实现。“Service” 的网络由 kubernetes集群予以肯定。

        为了提供更灵活的解决方式,k8s的网络模型需要借助于外部插件实现,它要求任何实现机制都必须满足以下需求:

①、所有 Pod 间通信 可不经 NAT机制 而直接通信;
②、所有 Node 与 Container 之间的通信 可不经 NAT机制而直接通信;
③、容器自己使用的IP也是其他容器或节点直接看到的地址。【换句话说:所有Pod对象都位于同一个网络平面(同一个网段),而且可以使用 Pod自身的 IP 直接通信。】

       


Pod IP —— 实际存在

        kubernetes 使用的网络插件必须可以为 Pod 提供满足上面那三个要求的 网络,它需要为每个Pod配置至少一个特定的“ip”,这个 IP 称之为 “Pod IP”“Pod IP ” 地址实际上存在于某个网卡(虚拟设备)上!!!”

        “Pod” 网络及其 IP 是由 kubernetes 的网络插件负责配置和管理的,具体使用的网络地址可以在管理配置网络插件的时候指定


Cluster IP —— 虚拟 IP

        Service 的地址是一个 虚拟的IP地址,没有任何的网络接口或设备配置此地址,它是由 “kube-proxy” 借助 “iptables”规则 或 “ipvs”规则 重新定向到本地端口,再将其调度至 后端“Pod对象”

        Service 的 IP地址 是集群提供服务的接口,也称之为 “Cluster IP”。 “Cluster 的网络 和 IP ” 则是由 “kubernetes”集群负责配置和管理的
       


       

集群网络总结:

        总结起来的话,kubernetes集群 至少 应该包括三个网络。
在这里插入图片描述

①、节点网络 —— 构建集群之前

       
        是 各主机(Master、Node、Etcd 等)自身所属的网络。其地址配置于 “主机的网络接口”,用于各个主机之间的通信

        例如:master 与 node 之间的通信:此地址配置于 k8s 集群构建之前,它并不能由 K8s管理,管理员需要在集群创建之前手动确定其地址配置及管理方式


②、Pod 网络 —— 构建集群时(虚拟网络)

       
        是 K8s cluster 上专用于 “Pod资源对象” 的网络,它是一个虚拟网络,用于为 “各 Pod对象” 设定 IP地址等网络参数,其地址配置于 “Pod 中 Container 的网络接口上”

        Pod网络需要借助 —— kubenet 或 CNI 实现。该插件可独立部署于 k8s 集群之外,也可托管于 K8s 之上。他需要在 构建k8s集群时由管理员进行定义,然后在创建Pod对象的时候由其自动完成各网络参数的动态配置 (相当于DHCP,给插件一个网段,然后由插件自行按照那个网段为Pod对象分配地址)

        CNI(容器网络接口)是由 CNCF 维护的项目,由一系列用于编写配置容器网络插件的规范和库接口(libcni)组成,支持众多插件项目。


③、Service 网络 —— 集群创建时(虚拟网络)

       
        它是专门用于 Service 资源对象的网络,它也是一个虚拟的网络,用于为 Kubernetes cluster 中的 Service 配置 IP 地址。

        但是,Service 的 IP 地址,并不配置于 任何 主机 或 Container 的网络接口之上,而是 通过 Node 上的 “kube-proxy” 配置为 “iptables” 或 “ipvs” 规则,从而将发往此 “service” 的所有流量通过规则调度至其后端的各“Pod对象”之上!

        Service 网络 与 Pod 网络一样,都是在创建集群的时候由管理员指定,Service IP 则在 创建 Service 的时候由 Service 网络 动态分配(类似于:dhcp)。


        这个是由我自己总结的,因为我是刚接触k8s,所以哪里有不对或者给您造成困扰,还请见谅,如需改正请联系我!非常感谢!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐