一千萬個為什麽

搜索

Helm為什麽幾乎每次都有時間?



我第一次嘗試設置 helm ,我遇到了麻煩。

首先,我使用 cluster-admin 角色創建了帳戶。 (根據 https://github.com/kubernetes/helm/blob/master/docs/rbac.md#example-service-account-with-cluster-admin-role )。

之後,我使用 helm init --service-account = tiller 初始化了全新的 helm 分蘗,並且成功了。

現在我正在嘗試安裝一些東西:

  • First try:

    $ helm repo add gitlab https://charts.gitlab.io
    $ helm install --name gitlab-runner -f gitlab-runner-values.yaml gitlab/gitlab-runner
    

    where gitlab-runner-values.yaml looks like this:

    gitlabUrl: https://my-gitlab.domain.com
    runnerRegistrationToken: "MY_GITLAB_RUNNER_TOKEN"
    concurrent: 10
    
  • Second try (as I was not sure if there is an issue with custom repo, so I tried from official):

    $ helm install stable/kibana
    

我收到這個錯誤:

Error: forwarding ports: error upgrading connection: error dialing backend: dial tcp 192.168.0.18:10250: getsockopt: connection timed out

我註意到 192.168.0.18 在pod列表上是可見的:

kube-system   kube-proxy-kzflh                        1/1       Running   0          7d        192.168.0.18   kube-worker-7
kube-system   weave-net-jq4n4                         2/2       Running   2          7d        192.168.0.18   kube-worker-7

並且 tiller 在同一節點上運行:

kube-system   tiller-deploy-5b48764ff7-qtv9v          1/1       Running   0          3m        10.38.0.1      kube-worker-7

有人告訴我,我可能沒有 pods/port-forwardlist pods 的權限,但 kubectl auth can-i創建pods/portforward </代碼>告訴我,我可以這樣做(與 list pods 相同)

helm list 也會拋出與 install 相同的錯誤。

轉載註明原文: Helm為什麽幾乎每次都有時間?

一共有 2 個回答:

您已找到Kubernetes問題#22770 ,其中提到了一種解決方法這裏,它如下所示:

您遇到的問題是k8s的一個已知問題,對於某些操作,它希望能夠解析全局DNS中的節點名稱。

     

並建議解決這個問題:

     
      
  • 在主服務器上的/ etc/hosts中添加條目,將主機名映射到其公共IP
  •   
  • 在主服務器上安裝dnsmasq(例如apt install -y dnsmasq)
  •   
  • 殺死master上的k8s api服務器容器(kubelet會重新創建它)
  •   
  • 然後systemctl重啟docker(或重新啟動master),以便它接收/etc/resolv.conf更改
  •   

作為對#22770問題的最後評論

我可以確認將我們的節點名稱添加到kubernetes master上的/ etc/hosts也可以解決這個問題:)

,所以在任何即將推出的版本中都沒有針對k8s的修復。至少從這張特別的票。

問題是節點在註冊 kubeadm init 時正在向集群主機提供其私有IP。這導致了問題,因為master正試圖到達 192.0。*。* 地址,這些地址從它的角度來看並未被解析為節點。

I needed to edit /etc/systemd/system/kubelet.service.d/10-kubeadm.conf and specify public IP of the node on --node-ip= parameter. The reload the service and restart it as mentioned in https://github.com/kubernetes/kubeadm/issues/203#issuecomment-335416377

然後我再次註冊節點,一切正常。