
Kuburnetes环境下,ingress可以按照目录和域名对站点流量进行分流,起到类似于传统的WEB虚拟主机的作用。
ingress-nginx是最常用的ingress组件。
但是在个人搭建的裸金属Kuburnetes环境下,ingress-nginx默认运行NodePort服务,只能对外开放30000以上的TCP服务端口,大大降低了实用性。
在部署ingress-nginx控制器时,改用DaemonSet和hostNetwork,就可以把TCP服务端口改为80和443,使ingess-nginx在裸金属集群下变得非常有用。
步骤如下:
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/baremetal/deploy.yaml
下载deploy.yaml,然后编辑它, 找到 Kind: Deployment
, 改为 Kind: DaemonSet
.
找到
strategy:
rollingUpdate:
maxUnavailable: 1
type: RollingUpdate
把这段代码删除,或者加上#注释掉。
然后找到
nodeSelector:
kubernetes.io/os: linux
serviceAccountName: ingress-nginx
terminationGracePeriodSeconds: 300
插入一行,改为
nodeSelector:
kubernetes.io/os: linux
serviceAccountName: ingress-nginx
hostNetwork: true
terminationGracePeriodSeconds: 300
修改完毕后,进行部署
kubectl apply -f ./deploy.yaml
控制器部署完毕,接下来就可以使用ingress了,ingress默认开放在ingress-nginx控制器运行节点的80和433端口上。
参考:https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters