Мне на ум приходят два варианта.
1) Создать NetworkPolicy
со значением по умолчанию, запрещающим весь egress
трафик с Kubernetes-apiservice
исключением диапазона IP-адресов.
Из-за некоторых перезапусков возможно изменение IP-адреса службы, что лучше для использования диапазона IP-адресов. В этом случае вам нужно внести в белый список kubernetes service IP
и Endpoint IP
.
В этом документе приведен пример с запретом всего трафика egress
. Вам нужно будет изменить этот пример, чтобы добавить этот адрес в качестве исключения. Это будет выглядеть так.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-egress
#optional namespace
spec:
podSelector: {}
policyTypes:
- Egress
egress
- to:
- ipBlock:
cidr: <kube-apiserver-IP-range>
- port: <svc-port>
protocol: <svc-protocol>
Я бы посоветовал вам проверить эту статью.
2) Создать service
со статическимIP, который будет перенаправлять трафик на kubernetes-apiserver
.
Сервис, который будет запускать kubectl proxy
на apiserver.
Как определить kube-apiserver
В каждом кластере по умолчанию вы сможете увидеть один сервис. Например, в kubeadm
это kubernetes
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 15d
Если вы опишите это, вы получите endpoint
.
$ kubectl describe svc kubernetes
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP: 10.96.0.1
Port: https 443/TCP
TargetPort: 6443/TCP
Endpoints: 10.166.0.30:6443
Session Affinity: None
Events: <none>
Если вы будете проверять модули из kube-system
пространства именбольшинство из них имеют IP-адрес, который является конечной точкой службы kubernetes.
$ kubectl get pods -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-5644d7b6d9-7sm4d 1/1 Running 3 15d 10.32.0.3 ubus-kubeadm <none> <none>
coredns-5644d7b6d9-g42g6 1/1 Running 3 15d 10.32.0.2 ubus-kubeadm <none> <none>
etcd-ubus-kubeadm 1/1 Running 3 15d 10.166.0.30 ubus-kubeadm <none> <none>
kube-apiserver-ubus-kubeadm 1/1 Running 3 15d 10.166.0.30 ubus-kubeadm <none> <none>
kube-controller-manager-ubus-kubeadm 1/1 Running 3 15d 10.166.0.30 ubus-kubeadm <none> <none>
kube-proxy-57r9m 1/1 Running 3 15d 10.166.0.30 ubus-kubeadm <none> <none>
kube-scheduler-ubus-kubeadm 1/1 Running 3 15d 10.166.0.30 ubus-kubeadm <none> <none>
weave-net-l6b5x 2/2 Running 9 15d 10.166.0.30 ubus-kubeadm <none> <none>