[英]Configure kube-proxy in GKE
有没有办法在 GKE 中配置 kube-proxy?
我可以看到从 daemonset 创建的 pod,但我看不到 daemonset 本身。
谢谢你的帮助。
在节点级别,系统由 Kubernetes K8s 管理,而在主级别,系统由 GKE 管理。 Master 操作和运行 Kubernetes API 服务器、核心资源控制器和调度程序。
即使 kube-proxy 驻留在节点中,集群也负责 kube-proxy,并且请记住,在 GKE 中无法访问集群主节点。
虽然可以在 Kubernetes k8s 中配置代理,但不能在 GKE 中这样做。
对于守护进程,请确保您正在查看所有名称空间。
$ kubectl get ds --all-namespaces
k8s 中的 kube-proxy pod(不仅在 GKE 中)被创建为静态 Pod 。
Kubelet 会在 Kubernetes API 服务器上为每个静态 Pod 自动创建所谓的镜像 Pod,因此 Pod 在那里可见,但无法从 API 服务器进行控制。 2
这就是为什么您不能将其编辑和配置为通常的 API 对象的原因。
但是,您可以在节点上编辑 kube-proxy 清单,kubelet 会应用新配置。 位于每个节点上的静态 pod 清单
/etc/kubernetes/manifests//etc/kubernetes/manifests/kube-proxy.manifest
您可以通过 ssh 进入节点并手动更改它,但我们可以使用 cilium 方法将其自动化,使用 DaemonSet 删除 kube-proxy 3并稍微修改它4 。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-proxy-configurator
namespace: kube-system
spec:
selector:
matchLabels:
name: kube-proxy-configurator
template:
metadata:
labels:
name: kube-proxy-configurator
spec:
initContainers:
- command:
- /bin/sh
- -c
- |
echo 'Changing kube-proxy iptables-min-sync-period'
sed -i 's/iptables-min-sync-period=10s/iptables-min-sync-period=2s/g' /etc/kubernetes/manifests/kube-proxy.manifest
echo 'All Done!'
image: alpine:latest
name: kube-proxy-configurator
securityContext:
privileged: true
volumeMounts:
- mountPath: /etc/kubernetes
name: kubernetes-configs
containers:
- image: k8s.gcr.io/pause
name: pause
terminationGracePeriodSeconds: 0
volumes:
- hostPath:
path: /etc/kubernetes
type: Directory
name: kubernetes-configs
只需应用它,kube-proxy 配置将在每个节点上更改(即使在自动缩放器新创建的节点上)。
kubectl apply -f kube-proxy-configurator.yml
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.