У нас есть 5-узловый кластер, который был перемещен за наш корпоративный брандмауэр / прокси-сервер.
В соответствии с указаниями здесь: настройка-автономный-kubernetes-кластер-за-корпоративный-прокси
Я устанавливаю переменные окружения прокси-сервера, используя:
export http_proxy=http://proxy-host:proxy-port/
export HTTP_PROXY=$http_proxy
export https_proxy=$http_proxy
export HTTPS_PROXY=$http_proxy
printf -v lan '%s,' localip_of_machine
printf -v pool '%s,' 192.168.0.{1..253}
printf -v service '%s,' 10.96.0.{1..253}
export no_proxy="${lan%,},${service%,},${pool%,},127.0.0.1";
export NO_PROXY=$no_proxy
Теперь все в нашем кластере работает внутри. Однако, когда я пытаюсь создать модуль, который вытягивает изображение снаружи, модуль застревает на ContainerCreating
, например,
[gms@thalia0 ~]$ kubectl apply -f https://k8s.io/examples/admin/dns/busybox.yaml
pod/busybox created
застрял здесь:
[gms@thalia0 ~]$ kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox 0/1 ContainerCreating 0 17m
Я полагаю, это связано с тем, что хост / домен извлекают образ из-за того, что он не входит в наши корпоративные прокси-правила. У нас есть правила для
k8s.io
kubernetes.io
docker.io
docker.com
Итак, я не уверен, какие другие хосты / домены нужно добавить.
Я описал модули для busybox и вижу ссылку на node.kubernetes.io
(я добавляю исключение для всего домена для *.kubernetes.io
, которое, будем надеяться, будет достаточным).
Это то, что я получаю от kubectl describe pods busybox
:
Volumes:
default-token-2kfbw:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-2kfbw
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 73s default-scheduler Successfully assigned default/busybox to thalia3.ahc.umn.edu
Warning FailedCreatePodSandBox 10s kubelet, thalia3.ahc.umn.edu Failed create pod sandbox: rpc error: code = Unknown desc = [failed to set up sandbox container "6af48c5dadf6937f9747943603a3951bfaf25fe1e714cb0b0cbd4ff2d59aa918" network for pod "busybox": NetworkPlugin cni failed to set up pod "busybox_default" network: error getting ClusterInformation: Get https://[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: dial tcp 10.96.0.1:443: i/o timeout, failed to clean up sandbox container "6af48c5dadf6937f9747943603a3951bfaf25fe1e714cb0b0cbd4ff2d59aa918" network for pod "busybox": NetworkPlugin cni failed to teardown pod "busybox_default" network: error getting ClusterInformation: Get https://[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: dial tcp 10.96.0.1:443: i/o timeout]
Normal SandboxChanged 10s kubelet, thalia3.ahc.umn.edu Pod sandbox changed, it will be killed and re-created.
Я бы предположил, что ошибка ситца связана с:
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Похоже, что в модулях calico
и coredns
аналогичные ошибки достигают node.kubernetes.io
, поэтому я предполагаю, что это связано с тем, что наш сервер не может загружать новые образы при перезагрузке.