使用vagrant搭建k8s节点五---使用Ingress实现域访问
Posted lovoo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用vagrant搭建k8s节点五---使用Ingress实现域访问相关的知识,希望对你有一定的参考价值。
一、Ingress 介绍
Kubernetes 暴露服务的有三种方式,分别为 LoadBlancer Service、NodePort Service、Ingress。官网对 Ingress 的定义为管理对外服务到集群内服务之间规则的集合,通俗点讲就是它定义规则来允许进入集群的请求被转发到集群中对应服务上,从来实现服务暴漏。 Ingress 能把集群内 Service 配置成外网能够访问的 URL,流量负载均衡,终止SSL,提供基于域名访问的虚拟主机等等。
二、Ingress 组成
ingress controller
将新加入的Ingress转化成nginx的配置文件并使之生效
ingress服务
将Nginx的配置抽象成一个Ingress对象,每添加一个新的服务只需写一个新的Ingress的yaml文件即可
三、Ingress 工作原理
1.ingress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化,
2.然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置,
3.再写到nginx-ingress-control的pod里,这个Ingress controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,
4.然后reload一下使配置生效。以此达到域名分配置和动态更新的问题
四、Ingress 可以解决什么问题
1.动态配置服务
如果按照传统方式, 当新增加一个服务时, 我们可能需要在流量入口加一个反向代理指向我们新的k8s服务. 而如果用了Ingress, 只需要配置好这个服务, 当服务启动时, 会自动注册到Ingress的中, 不需要而外的操作.
2.减少不必要的端口暴露
配置过k8s的都清楚, 第一步是要关闭防火墙的, 主要原因是k8s的很多服务会以NodePort方式映射出去, 这样就相当于给宿主机打了很多孔, 既不安全也不优雅. 而Ingress可以避免这个问题, 除了Ingress自身服务可能需要映射出去, 其他服务都不要用NodePort方式
五、部署ingress controller
下载 k8s文件:https://download.csdn.net/download/lovoo/20589497?spm=1001.2014.3001.5503
解压后,如图:
1、部署ingress
在 master 节点输入
#查看ingress内容
cat ingress-controller.yam
#部署
kubectl apply -f ingress-controller.yam
2、查看部署结果
kubectl get pods
kubectl get pods --all-namespaces
3、创建ingress-tomcat6.yml
设置访问域: tomcat6.mall.com
apiVersion: extensions/v1betal
kind: Ingress
metadata:
name: web
spec:
rules:
- host: tomcat6.mall.com
http:
paths:
- backend:
serviceName: tomcat6
servicePort: 80
部署
kubectl apply -f ingress-tomcat6.yml
4、在windows环境下的hosts文件中添加
192.168.16.151 tomcat6.mall.com
192.168.16.152 tomcat6.mall.com
192.168.16.153 tomcat6.mall.com
即可通过 tomcat6.mall.com 访问服务器了
分布式技术QQ群:722865146
分布式商城下载:https://gitee.com/charlinchenlin/wysmall
以上是关于使用vagrant搭建k8s节点五---使用Ingress实现域访问的主要内容,如果未能解决你的问题,请参考以下文章