Как установить кластер Kubernetes за прокси с помощью Kubeadm?

Я столкнулся с парой проблем при установке Kubernetes с Kubeadm. Я работаю за корпоративной сетью. Я объявил настройки прокси в среде сеанса.

$ 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

Затем я обнаружил, что ни один из компонентов kube не работал, пока kubelet продолжал запрашивать kube-apiserver. sudo docker ps -a ничего не вернул.

Какова его возможная первопричина?

Заранее спасибо.


person ichbinblau    schedule 09.08.2017    source источник


Ответы (1)


Я бы сильно подозревал, что он пытается вытащить образы докеров для gcr.io/google_containers/hyperkube:v1.7.3 или чего-то еще, что требует обучения демону докеров прокси, таким образом, используя systemd

Это, безусловно, объясняет, почему docker ps -a ничего не показывает, но я ожидаю, что журналы dockerd journalctl -u docker.service (или его эквивалент в вашей системе) будут жаловаться на его неспособность извлечь из gcr.io

Основываясь на том, что я прочитал из справочного руководства kubeadm, они ожидают, что вы исправите конфигурацию systemd на целевой машине, чтобы выставить эти переменные среды, а не просто установить их в оболочке, запустившей kubeadm (хотя это, безусловно, может быть запрос функции )

person mdaniel    schedule 09.08.2017
comment
Да, это действительно была настройка прокси для docker pull. Я установил env в systemd, и он работает. Но спасибо, что указали на это и прояснили. - person ichbinblau; 09.08.2017
comment
Я не могу подтвердить, что настройки прокси-сервера докеров влияют на процесс принятия решений kubeadms. У меня там разные доменные имена (hostname vs hostname -f) - person erikbwork; 09.05.2018