kubernetes上构建外部能够访问到的应用
标签:kubernetes 服务发现
起因是我在安装dashboard的时候,外部无论如何也不能够访问到dashboard,后面改了service也只是提供了一个内网ip,而且登陆不上。
问题:如果有一个和k8s集群不在同一个子网的机器,它该如何访问k8s集群内部署的服务?
参考:
基本思想:如果云服务商不提供负载均衡器的话,外部想要访问只能够使用NodePort,但是一般需要nginx再进行一次反向代理。而ingress出现后可以用ingress controller读取集群中的ingress规则变化,动态生成nginx配置文件并注入到nginx的Pod中。
为什么要部署ingress:Service NodePort是4层调度,无法直接卸载https协议,而kubernetes ingress是7层调度,可以直接卸载https回话。
实验目标
- 实现外网到内网服务器通过ServicePort的访问
- 实现外网到内网服务器通过Ingress的访问
- 实现其他方式的服务发现
开始实验
因为我安装了istio,先将istio注入关闭:kubectl label namespace default istio-injection=disabled --overwrite
,希望我实验完之后记得把它弄回去。
首先配置nginx的Deployment,rc也可以
apiVersion: extensions/v1beta1
kind: Deployment