0

我正在运行单节点 k3s 安装。运行它的机器安装了两个 NIC,并分配了两个 IP 地址。我希望入口只绑定到其中一个,但无论我尝试什么,nginx 都将始终绑定到两个/所有接口。

我将官方 Helmchart 用于 ingress-nginx 并修改了以下值:

clusterIP: ""
...
externalIPs:
      - 192.168.1.200
...
externalTrafficPolicy: "Local"
...

以下对我来说看起来并没有那么糟糕,但 nginx 仍在另一个接口(192.168.1.123)上监听...

❯ k get service -n ingress-nginx
NAME                       TYPE           CLUSTER-IP     EXTERNAL-IP                   PORT(S)                      AGE
ingress-nginx-controller   LoadBalancer   10.43.30.231   192.168.1.200,192.168.1.200   80:30047/TCP,443:30815/TCP   9m14s

这是 Helm 生成的服务:

kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx-controller
  namespace: ingress-nginx
  ...
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/version: 0.45.0
    helm.sh/chart: ingress-nginx-3.29.0
  annotations:
    meta.helm.sh/release-name: ingress-nginx
    meta.helm.sh/release-namespace: ingress-nginx
  managedFields:
    ...
spec:
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: http
      nodePort: 30047
    - name: https
      protocol: TCP
      port: 443
      targetPort: https
      nodePort: 30815
  selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
  clusterIP: 10.43.30.231
  clusterIPs:
    - 10.43.30.231
  type: LoadBalancer
  externalIPs:
    - 192.168.1.200
  sessionAffinity: None
  externalTrafficPolicy: Local
  healthCheckNodePort: 32248
status:
  loadBalancer:
    ingress:
      - ip: 192.168.1.200
4

1 回答 1

0

您需要在 configmap 设置中设置绑定地址。

设置服务器将接受请求的地址而不是 *. 需要注意的是,这些地址必须存在于运行环境中,否则控制器会崩溃循环。

于 2021-08-23T14:03:59.300 回答