在一个多集群中,使用 Istio 设置命名空间租赁的单网格(纯粹有超过 5,000 个节点),我想创建一个网关并将其分配给特定节点,当前的文档没有涵盖这里的网关但是IstioOperator在这里通过 NodeSelector
我将如何分配特定节点(以及 Istio 网关的可能特定公共 IP)
我已经研究了一个类似的问题,但是我没有看到任何适当的记录方法来解决这个问题。
编辑我希望网关成为集群上所有命名空间的唯一入口
Gateway
object 只不过是作为代理的pod 的Envoy
配置。istio-ingressgateway
Envoy
因此,如果您希望将网关部署在特定节点上,则应将nodeSelector
or添加nodeAffinity
到.Deployment
istio-ingressgateway
编辑
假设你已经istioctl
下载了。
$ kubectl label no worker-1-v1-21 istio-gatewaynode=valid
$ istioctl manifest generate --set profile=demo > istio.yaml
$ vim istio.yaml
搜索被Deployment
调用istio-ingressgateway
,并将以下行添加到nodeAffinity
sectio,如下所示:
...
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- ppc64le
- s390x
requiredDuringSchedulingIgnoredDuringExecution: <-
nodeSelectorTerms: <-
- matchExpressions: <- add
- key: istio-gatewaynode <- these
operator: In <- lines
values: <-
- valid <-
containers:
- args:
...
使用生成的 yaml 安装 istio:
# kubectl create -f istio.yaml
...
# kubectl get po -n istio-system -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
istio-egressgateway-5547fcc8fc-wntbc 1/1 Running 0 13m 192.168.184.5 worker-2-v1-21 <none> <none>
istio-ingressgateway-85b7fddd86-mntmz 1/1 Running 0 13m 192.168.166.70 worker-1-v1-21 <none> <none>
istiod-6659979bdf-vwc4x 1/1 Running 0 13m 192.168.184.4 worker-2-v1-21 <none> <none>