我們可以使用kube-proxy實(shí)現(xiàn)service的負(fù)載均衡掺栅,但是使用kube-proxy方式有一定的局限冗澈,比如遠(yuǎn)程計(jì)算機(jī)的ip會(huì)被抹掉,隨著服務(wù)越來(lái)越多示血,port數(shù)量受限等棋傍,所以可以通過(guò)配置ingress實(shí)現(xiàn)容器的負(fù)載均衡,獲得更多的feature难审。
配置主要包含以下幾個(gè)方面:
- 準(zhǔn)備tls密鑰文件瘫拣。
參考鏈接: https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx/examples/tls
(如果使用非加密方式訪(fǎng)問(wèn),那么官方的nginx-ingress-controller.yaml使用的nginx dockerfile生成的nginx controller會(huì)默認(rèn)返回code 301.如下圖所示)
image.png
- 創(chuàng)建nginx-ingress-controller告喊。
參考鏈接:
https://github.com/kubernetes/ingress-nginx/tree/master/examples/deployment
github里面還有其他的實(shí)現(xiàn)ingress controller的方式麸拄,這里我選用了nginx - 創(chuàng)建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
(此處沒(méi)有設(shè)置hosts,如果你想要應(yīng)用只接受本地請(qǐng)求黔姜,那么可以設(shè)置hosts參數(shù))
- 創(chuàng)建ingress 后拢切,查看ing狀態(tài)
image.png
- 瀏覽器中訪(fǎng)問(wèn) https://ip/path
image.png