【问题标题】:kubeadm init phase upload-config failingkubeadm 初始化阶段上传配置失败
【发布时间】:2020-06-24 09:00:20
【问题描述】:

我是 kubernetes 新手,想在成功完成 minikube 和单主 kubernetes 集群的示例后设置 kubernetes HA 设置。为此,我正在使用 AWS EC2 实例和 AWS 应用程序负载均衡器。我不想使用 KOPS 或任何其他工具进行安装。我想亲身体验 kubeadm。 我按照以下步骤操作

  1. 创建自签名证书 ca.crt 和 ca.key 用于 Kubernetes
  2. 在我的 ubuntu 上将此证书安装为根 CA 实例
  3. 将此 ca.crt 和 ca.key 复制到 /etc/kubernetes/pki
  4. 为 aws 负载均衡器创建新证书并签名 它与上面的 ca.crt。使用此证书创建 Aws 应用程序 负载均衡器
  5. 我还在 AWS Route53 中创建了记录集,用于域名映射。我也确定了这个域名 映射工作。 (即 master.k8sonaws.com 正确解析为 aws 负载均衡器)
  6. 现在我正在使用 kubeadm init

    kubeadm init --pod-network-cidr=192.168.0.0/20
    --service-cidr=192.168.16.0/20 --node-name=10.0.0.13  --control-plane-endpoint "master.k8sonaws.com:443"  --upload-certs --v=8 --apiserver-bind-port=443 --apiserver-cert-extra-sans=master.k8sonaws.com,i-0836dd4dc6609a924
    
  7. 此命令正在执行上传配置阶段。运行状况检查端点返回成功,但 之后它在上传配置阶段失败

    configmaps 被禁止:用户“system:anonymous”无法在命名空间的 API 组“”中创建资源“configmaps” “kube 系统”

在这里我无法理解为什么 kubeadm 将匿名用户传递给 api 调用。我该如何解决这个问题

【问题讨论】:

    标签: amazon-web-services kubernetes kubeadm


    【解决方案1】:

    用于创建 ConfigMap 的 kubeconfig 文件中的证书没有正确的组。我想说不要自己为 kubernetes 生成 ca 和 cert。只需使用 kubeadm init,kubeadm 将处理 ca 和 cert 生成。在您的 kubernetes 集群启动并运行后,您可以使用相同的 ca 自己生成证书并在 aws 负载均衡器中使用它。

    【讨论】:

    • 我试过接近你的方法它不起作用,好像还有其他问题
    • 您遇到什么错误? k8s 集群是否启动并运行但负载均衡器不工作?
    • 负载均衡器正在工作,但禁止配置映射:用户“system:anonymous”有问题。
    【解决方案2】:

    在尝试了很多不同的事情后,我找到了解决这个问题的方法 2天。问题是 aws 负载均衡器没有通过客户端 使用 https 侦听器时向后端服务器发送证书。问题是 AWS 有 没有记录这个事实,或者我没有得到这些文件,如果他们是 在那里。

    解决此问题的方法是使用平面 http 侦听器使用相同的端口 443。因此 SSL 终止由后端服务器执行。在我的情况下,这不是安全威胁,因为我的负载均衡器和后端服务器都是内部服务器,不会暴露给公共 IP。

    【讨论】:

      猜你喜欢
      • 2018-09-17
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 2012-04-23
      相关资源
      最近更新 更多