【问题标题】:How to install Kubernetes cluster behind proxy with Kubeadm?如何使用 Kubeadm 在代理后面安装 Kubernetes 集群?
【发布时间】:2018-01-16 18:13:47
【问题描述】:

我在使用 Kubeadm 安装 Kubernetes 时遇到了几个问题。我在公司网络后面工作。我在会话环境中声明了代理设置。

$ export http_proxy=http://proxy-ip:port/
$ export https_proxy=http://proxy-ip:port/
$ export no_proxy=master-ip,node-ip,127.0.0.1

安装完所有必要的组件和依赖后,我开始初始化集群。为了使用当前的环境变量,我使用了sudo -E bash

$ sudo -E bash -c "kubeadm init --apiserver-advertise-address=192.168.1.102 --pod-network-cidr=10.244.0.0/16"

然后输出消息永远挂在下面的消息上。

[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.7.3
[init] Using Authorization modes: [Node RBAC]
[preflight] Running pre-flight checks
[preflight] Starting the kubelet service
[kubeadm] WARNING: starting in 1.8, tokens expire after 24 hours by default (if you require a non-expiring token use --token-ttl 0)
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [loadbalancer kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.1.102]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[apiclient] Created API client, waiting for the control plane to become ready

然后我发现在kubelet 不断请求kube-apiserver 时,所有kube 组件都没有启动。 sudo docker ps -a 什么也没返回。

它可能的根本原因是什么?

提前致谢。

【问题讨论】:

    标签: proxy kubernetes kubeadm


    【解决方案1】:

    我强烈怀疑它正在尝试为gcr.io/google_containers/hyperkube:v1.7.3 或其他任何东西拉下 docker 映像,这需要向 docker 守护进程教授代理 in this way using systemd

    这当然可以解释为什么 docker ps -a 什么都没有显示,但我希望 dockerd 日志 journalctl -u docker.service(或您系统中的等效项)抱怨它无法从 gcr.io 拉取数据

    根据我从 kubeadm 参考指南中读到的内容,他们希望您修补目标机器上的 systemd 配置以公开这些环境变量,而不仅仅是将它们设置在启动 kubeadm 的 shell 中(尽管这当然可以功能请求)

    【讨论】:

    • 是的,这确实是docker pull 的代理设置。我已经在 systemd 中设置了环境并且它可以工作。但是感谢您指出并说明清楚。
    • 我无法确认 docker 代理设置会影响 kubeadms 决策过程。我在那里有不同的域名(hostname vs hostname -f
    猜你喜欢
    • 2021-03-25
    • 2017-06-03
    • 2019-05-08
    • 1970-01-01
    • 2020-08-11
    • 2018-09-28
    • 2020-08-05
    • 2019-05-26
    • 2018-02-01
    相关资源
    最近更新 更多