В моей конфигурации очень простая (только сеть calico, приложений пока нет) у меня nginx-ingress работает как NodePort - привязка к порту 30080. Этот порт должен быть доступен только с localhost, но k8s открыл этот порт для всех, и поскольку он привязка к 0.0.0.0 теперь широко открыта.
Поэтому я хочу заставить kube-proxy привязать этот порт только к 127.0.0.1.
Я пробовал изменить configmap на nginx-ingress (адрес привязки), но не повезло.
Поскольку этот порт привязан к kube-proxy - я искал конфигурацию kube-proxy, но не повезло. Я нашел файл конфигурации yaml в / var / lib / kube-proxy, но его изменение не изменило этого.
После перезапуска подов они по-прежнему привязаны к 0.0.0.0
Я пробовал много способов из Интернета, но все равно не повезло.
Кластер был инициализирован с помощью: kubeadm init --pod-network-cidr = 10.XXX.XXX.XXX / XX --apiserver-Advertise-address = X.X.X.X
Не уверен, что это то, что вы искали, но в этом случае он будет слушать 127.0.0.1:NodePort
Вам нужно изменить kube-proxy
configmap но нет bindAddress:
(его следует оставить как было bindAddress: 0.0.0.0
) и значение по умолчанию nodePortAddresses: null
следует изменить на nodePortAddresses: ["127.0.0.0/8"]
. Это должно быть ["127.0.0.0/8"]
как будто ты изменишься просто на 127.0.0.1/8
kube-proxy
стручок раздавит.
+ Изменить nodePortAddresses: null
к nodePortAddresses: ["127.0.0.0/8"]
и сэкономить, используя :wq
. По умолчанию edit
откроется в VI
Текстовый редактор.
$ kubectl edit cm kube-proxy -n kube-system
configmap/kube-proxy edited
Если вы хотите использовать nano в качестве текстового редактора, вы должны использовать KUBE_EDITOR="nano" kubectl edit cm kube-proxy -n kube-system
.
В качестве примера я использовал Nginx deployment
из это документы. Только изменение было добавлено type: NodePort
для обслуживания YAML.
Теперь вам нужно будет применить эту новую конфигурацию к kube-proxy. Самый простой способ - удалить kube-proxy
стручок как daemonset.apps/kube-proxy
создаст новый с новой конфигурацией.
Исходный результат:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 19m
my-nginx NodePort 10.109.237.94 <none> 80:31672/TCP 24s
$ netstat -plnt
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:31672 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN -
...
Выход с измененным nodePortAddresses:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 33m
my-nginx NodePort 10.96.27.244 <none> 80:30679/TCP 2m40s
$ netstat -plnt
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:30679 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN -
...