您好,登录后才能下订单哦!
这篇文章主要介绍Kubernetes网络的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Kubernetes是Google开源的容器集群管理系统。它构建docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。
那么关于k8s最重要的几个概念是什么呢?
Pod通信
Pod内部: 端口互访;
同一Node上: 通过网桥通信;
不同Node上: 通过Overlay网络或路由来通信; RC管理的Pod的版本更新或重启导致IP变化
Service与Pod通信
Service作为Pod的服务代理,必须满足:
对外访问点(IP地址)固定,不轻易更新;
转发外部的访问请求到endpoints;
监控endpoints的变化,实时更新规则;
提供负载均衡。
每个service都有2种模式,可根据实际情况在配置kubernetes的时候选择适合的模式来工作。
Userspace模式:
在选择Userspace模式,分为三种类型:
Cluster-IP类型:
Cluster-IP-range可配置;
Cluster-IP不需要配置到网卡上;
报文被转到kube-proxy自动分配的端口上;
适用于Pod与Host访问Service;
Node-Port类型:
监听Node上所有IP的相应端口;
报文被转到kube-proxy自动分配的端口上;
适用于外部主机通过Node物理网络访问Service;
LoadBalancer类型:
外部LB的对应port监听请求,将流量转发到Node;
各Node上基于Node-Port的配置来接力转发;
适用于外网访问内部Service;
iptables模式:
无论何类型均会分配到Cluster-IP;
Cluster-IP的监听端口可指定;
对Iptables的使用,像openflow的流表逐级过滤;
需要对endpoint上发送来的流量做SNAT;
重点是如何做负载均衡。
服务发现
Service环境变量:
{SVCNAME}_SERVICE_HOST
{SVCNAME}_SERVICE_PORT
{SVCNAME}_SERVICE_PORT_{PORTNAME}
Link环境变量:
<alias>_NAME
<name>_PORT_<port>_<protocol>
<name>_PORT_<port>_<protocol>_ADDR
<name>_PORT_<port>_<protocol>_PORT
<name>_PORT_<port>_<protocol>_PROTO
缺陷:
Pod获取环境变量无法跨Namespace;
时序,Pod必须晚于Service创建;
Cluster DNS
Kube2sky监听K8S Api-server;
Service更新,kube2sky将记录保存到etcd;
Skydns支持以etcd backend;
Pod访问skyDNS解析域名。
search default.svc.wise2c.com svc.wise2c.com wise2c.comnameserver 192.168.99.1optionsndots:5
绝对域名,即域名以`.`结尾, 仅查询该域名;
相对域名,且域名包含的`.`的数目大于或等于option ndots命令指定的数,仅查询该域名;
相对域名,且域名包含的`.`的数目少于option ndots命令指定的数,依次往传入的域名后追加search列表中的后缀;
以上是“Kubernetes网络的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。