加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

一篇文章为你图解Kubernetes网络通信原理

发布时间:2019-08-29 20:33:23 所属栏目:教程 来源:云端密码
导读:名词解释 1、网络的命名空间:Linux在网络栈中引入网络命名空间,将独立的网络协议栈隔离到不同的命令空间中,彼此间无法通信;docker利用这一特性,实现不容器间的网络隔离。 2、Veth设备对:也叫虚拟网络接口对。Veth设备对的引入是为了实现在不同网络命

Ingress是推荐在生产环境使用的方式,它起到了七层负载均衡器和Http方向代理的作用,可以根据不同的url把入口流量分发到不同的后端Service。外部客户端只看到foo.bar.com这个服务器,屏蔽了内部多个Service的实现方式。采用这种方式,简化了客户端的访问,并增加了后端实现和部署的灵活性,可以在不影响客户端的情况下对后端的服务部署进行调整。

其部署的yaml可以参考如下模板:

  1. apiVersion: extensions/v1beta1 
  2. kind: Ingress 
  3. metadata: 
  4.  name: test 
  5.  annotations: 
  6.  ingress.kubernetes.io/rewrite-target: / 
  7. spec: 
  8.  rules: 
  9.  - host: test.name.com 
  10.  http: 
  11.  paths: 
  12.  - path: /test 
  13.  backend: 
  14.  serviceName: service-1 
  15.  servicePort: 8118 
  16.  - path: /name 
  17.  backend: 
  18.  serviceName: service-2 
  19.  servicePort: 8228 

这里我们定义了一个ingress模板,定义通过test.name.com来访问服务,在虚拟主机test.name.com下面定义了两个Path,其中/test被分发到后端服务s1,/name被分发到后端服务s2。

集群中可以定义多个ingress,来完成不同服务的转发,这里需要一个ingress controller来管理集群中的Ingress规则。Ingress Contronler 通过与 Kubernetes API 交互,动态的去感知集群中 Ingress 规则变化,然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段 Nginx 配置,再写到 Nginx-ingress-control的 Pod 里,这个 Ingress Contronler 的pod里面运行着一个nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,然后 reload使用配置生效。

Kubernetes提供的Ingress Controller模板如下:

  1. apiVersion: extensions/v1beta1 
  2. kind: Ingress 
  3. metadata: 
  4.  name: test 
  5.  annotations: 
  6.  ingress.kubernetes.io/rewrite-target: / 
  7. spec: 
  8.  rules: 
  9.  - host: foo.bar.com 
  10.  http: 
  11.  paths: 
  12.  - path: /foo 
  13.  backend: 
  14.  serviceName: s1 
  15.  servicePort: 80 
  16.  - path: /bar 
  17.  backend: 
  18.  serviceName: s2 
  19.  servicePort: 80 

总结及展望

本文针对kubernetes的网络模型,从一个service,二个IP,三个port出发进行图解。详解kubernetes集群内及集群外部访问方式。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读