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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注