【问题标题】:Restart Kubernetes API server with different options使用不同的选项重新启动 Kubernetes API 服务器
【发布时间】:2017-05-24 19:11:29
【问题描述】:

我对 Kubernetes 和集群还很陌生,所以这可能很简单。

我使用kubeadmthis guide 建立了一个有5 个节点的Kubernetes 集群。我遇到了一些问题,但最终都奏效了。所以现在我想安装Web UI (Dashboard)。为此,我需要设置身份验证:

请注意,这仅在 apiserver 设置为允许使用用户名和密码进行身份验证时才有效。目前,某些设置工具(例如 kubeadm)并非如此。有关如何手动配置身份验证的信息,请参阅身份验证管理文档。

所以我必须阅读文档中的authentication page。我决定要通过Static Password File 添加身份验证。为此,我必须将选项 --basic-auth-file=SOMEFILE 附加到 Api 服务器。

当我做ps -aux | grep kube-apiserver 这是结果,所以它已经在运行了。 (这是有道理的,因为我在调用kubectl 时使用它)

kube-apiserver 
  --insecure-bind-address=127.0.0.1
  --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,ResourceQuota 
  --service-cluster-ip-range=10.96.0.0/12 
  --service-account-key-file=/etc/kubernetes/pki/apiserver-key.pem 
  --client-ca-file=/etc/kubernetes/pki/ca.pem 
  --tls-cert-file=/etc/kubernetes/pki/apiserver.pem 
  --tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem 
  --token-auth-file=/etc/kubernetes/pki/tokens.csv 
  --secure-port=6443 
  --allow-privileged 
  --advertise-address=192.168.1.137
  --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname 
  --anonymous-auth=false 
  --etcd-servers=http://127.0.0.1:2379

我有几个问题:

  • 那么所有这些选项设置在哪里?
  • 我可以终止这个进程并使用我需要的选项重新启动它吗?
  • 重启系统后会启动吗?

【问题讨论】:

    标签: authentication kubernetes kubectl kubeadm


    【解决方案1】:

    /etc/kubernetes/manifests 中是一个名为kube-apiserver.json 的文件。这是一个 JSON 文件,包含您可以设置的所有选项。我附加了--basic-auth-file=SOMEFILE 并重新启动了系统(在更改文件kubectl 后立即不再工作并且API 已关闭)

    重新启动后,整个系统再次运行。

    更新

    我没有设法使用它来运行仪表板。我最后做的是在集群上安装仪表板。将密钥从主节点 (/etc/kubernetes/admin.conf) 复制到我的笔记本电脑,并使用kubectl proxy 将仪表板的流量代理到我的本地计算机。现在我可以在我的笔记本电脑上通过 127.0.0.1:8001/ui 访问它

    【讨论】:

    • 嗨 Ravenix,重启后 --basic-auth-file=SOMEFILE 更改对您有用吗?我做了同样的事情,但对我来说,更改不起作用。从远程使用 kubectl 时,它没有验证我在 --basic-auth-file=xx.csv 文件中传递的密码。
    • @AnumanthaRaja:不,最后我所做的是在集群上安装仪表板。将密钥从主节点 (/etc/kubernetes/admin.conf) 复制到我的笔记本电脑,并使用kubectl proxy 将仪表板的流量代理到我的本地计算机。现在我可以通过127.0.0.1:8001/ui访问它了
    • @Ravenix 你用这个问题救了我,你最后的评论在这里。我认为编辑答案以添加kubectl proxy 解决方案可能会对未来的谷歌员工有更多帮助。再次感谢!
    • @Bloke 感谢您的反馈,我已经更新了答案。
    【解决方案2】:

    我只是在一个类似的用例中发现了这个,在添加带有文件路径的选项后,API 服务器崩溃了。

    我能够解决它,也许这对其他人也有帮助:

    https://kubernetes.io/docs/reference/setup-tools/kubeadm/implementation-details/#constants-and-well-known-values-and-paths 中所述,/etc/kubernetes/manifests 中的文件是静态 pod 定义。因此适用容器规则。

    因此,如果您添加带有文件路径的选项,请确保使用 hostPath 卷将其提供给 pod。

    【讨论】:

      猜你喜欢
      • 2020-07-17
      • 1970-01-01
      • 2019-08-29
      • 2011-04-21
      • 2019-03-23
      • 1970-01-01
      • 2011-03-08
      • 2015-12-29
      相关资源
      最近更新 更多