【问题标题】:Kubernetes/CoresOS Nodes cannot communicate to ApiServer Kube Proxy issuesKubernetes/CoresOS 节点无法与 ApiServer Kube 代理通信问题
【发布时间】:2017-10-16 21:59:03
【问题描述】:

我按照本指南 https://coreos.com/kubernetes/docs/latest/deploy-workers.html 设置了 Kubernetes 网络,当我运行仪表板或 DNS 插件时,它们在 25 秒后导致 crashloopbackoff。然后我关注了这个https://github.com/kubernetes/dashboard/blob/master/docs/user-guide/troubleshooting.md,它在我执行时超时

kubectl exec test-701078429-s5kca -- curl -k https://10.3.0.1

注意如果我执行了 kubectl exec test-701078429-s5kca -- curl -k https://192.168.3.240 它有效(公共 IP)

如果我在主节点上执行 curl -k https://10.3.0.1 也可以。

所以问题是我在 10.2.0.0/16 上的 Kubelet 无法与 10.3.0.1/24 上的 api 服务器通信,这表明它可能是 kube 代理问题。仅供参考:我可以使用 10.2.x.x 成功地从一台机器上的一个节点内部 ping 到另一台机器上的另一个节点

【问题讨论】:

    标签: kubernetes kube-proxy


    【解决方案1】:

    问题是 kubelets /etc/kubernetes/manifests/kube-proxy.yaml 中的配置问题

    这一行 - --master=https:// 需要 https:// 而我只有 IP 192.168.3.220。下面是我的工作 kube-proxy.yaml

        apiVersion: v1
        kind: Pod
        metadata:
          name: kube-proxy
          namespace: kube-system
        spec:
          hostNetwork: true
          containers:
          - name: kube-proxy
            image: quay.io/coreos/hyperkube:v1.6.1_coreos.0
            command:
            - /hyperkube
            - proxy
            - --master=https://192.168.3.240
            - --kubeconfig=/etc/kubernetes/worker-kubeconfig.yaml
            - --proxy-mode=iptables
            securityContext:
              privileged: true
            volumeMounts:
            - mountPath: /etc/ssl/certs
              name: "ssl-certs"
            - mountPath: /etc/kubernetes/worker-kubeconfig.yaml
              name: "kubeconfig"
              readOnly: true
            - mountPath: /etc/kubernetes/ssl
              name: "etc-kube-ssl"
              readOnly: true
          volumes:
          - name: "ssl-certs"
            hostPath:
              path: "/usr/share/ca-certificates"
          - name: "kubeconfig"
            hostPath:
              path: "/etc/kubernetes/worker-kubeconfig.yaml"
          - name: "etc-kube-ssl"
            hostPath:
              path: "/etc/kubernetes/ssl"
    

    该指南很棒,只是在这方面有点误导,因为在 /etc/systemd/system/kubelet.service 之前的直接代码 sn-p 中它具有 --api-servers=https:/ /${MASTER_HOST} \ 带有 https:// ,其中 /etc/kubernetes/manifests/kube-proxy.yaml 的 yaml 有 - --master=${MASTER_HOST} 没有 https:// 前缀

    【讨论】:

      猜你喜欢
      • 2016-04-22
      • 2020-06-16
      • 2017-09-03
      • 2019-10-02
      • 1970-01-01
      • 2017-05-07
      • 2022-01-25
      • 1970-01-01
      • 2019-09-14
      相关资源
      最近更新 更多