0

我按照本指南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.xx 从一台机器上的一个节点内部成功 ping 到另一台机器上的另一个节点

4

1 回答 1

0

问题是 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 的直接代码片段中它有 --api-servers=https://${MASTER_HOST} \ 带有 https:// ,因为 /etc/kubernetes/manifests/kube-proxy.yaml 的 yaml 有 - --master=${MASTER_HOST} 没有 https:// 前缀

于 2017-05-17T12:26:18.267 回答