在GKE中配置kube-proxy

时间:2018-06-21 10:04:48

标签: kubernetes google-kubernetes-engine

是否可以在GKE中配置kube-proxy?

我可以看到从守护程序集创建的容器,但是看不到守护程序集本身。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在节点级别,系统由Kubernetes K8s管理,而在主控级别,系统为managed by GKEmaster operates并运行Kubernetes API服务器,核心资源控制器和调度程序。

即使kube-proxy驻留在节点内,群集仍负责kube-proxy,并且请记住,在GKE中,群集主服务器不可访问。

虽然可以configure the proxy in Kubernetes k8s,但在GKE中是不可能的。

对于守护程序,请确保您正在浏览所有名称空间。

$ kubectl get ds --all-namespaces

答案 1 :(得分:0)

k8s 中的 kube-proxy pod(不仅在 GKE 中)被创建为 Static 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-proxy3 并稍微修改它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