我们可以使用kube-proxy实现service的负载均衡,但是使用kube-proxy方式有一定的局限,比如远程计算机的ip会被抹掉,随着服务越来越多,port数量受限等,所以可以通过配置ingress实现容器的负载均衡,获得更多的feature。
配置主要包含以下几个方面:
- 准备tls密钥文件。
参考链接: https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx/examples/tls
(如果使用非加密方式访问,那么官方的nginx-ingress-controller.yaml使用的nginx dockerfile生成的nginx controller会默认返回code 301.如下图所示)
- 创建nginx-ingress-controller。
参考链接:
https://github.com/kubernetes/ingress-nginx/tree/master/examples/deployment
github里面还有其他的实现ingress controller的方式,这里我选用了nginx - 创建ingress
参考链接:
https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout
sample code
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app-ingress
spec:
tls:
- secretName: app-secret
rules:
- http:
paths:
- path: /mongotest
backend:
serviceName: app-svc
servicePort: 9000
- path: /test2
backend:
serviceName: app-svc
servicePort: 9000
(此处没有设置hosts,如果你想要应用只接受本地请求,那么可以设置hosts参数)
- 创建ingress 后,查看ing状态
- 浏览器中访问 https://ip/path
网友评论