Как настроить kubeadm для работы через прокси?

У меня есть сервер с RHEL 8, который находится в локальной сети. Я пытаюсь настроить одно́нодовый кластер по <a href="https://habr.com/ru/articles/847116/" rel="nofollow">данной инструкции</a>. Подключение к Интернету осуществляется через прокси-сервер Squid 6.6. Я добавил настройки прокси в systemd юнит containerd: <br/> <pre><code>cat /etc/systemd/system/containerd.service.d/override.conf
[Service]
Environment="HTTP_PROXY=http://172.16.8.21:3128"
Environment="HTTPS_PROXY=https://172.16.8.21:3128"
Environment="NO_PROXY=localhost,127.0.0.1,172.16.8.0/24"</code></pre> <br/> Однако, когда я пытаюсь загрузить необходимые образы, возникает ошибка. Можете подсказать, как правильно настроить Kubernetes для работы с прокси?
  • 9 января 2025 г. 6:13
Ответы на вопрос 2
Для настройки Kubernetes (и kubeadm) для работы через прокси-сервер, вы можете выполнить следующие шаги:

### 1. Настройте переменные среды для контейнеризованного окружения

Вы уже добавили настройки прокси в `override.conf` для `containerd`. Убедитесь, что эти настройки правильно подхватываются, и перезапустите службу `containerd`:

```bash
sudo systemctl daemon-reload
sudo systemctl restart containerd
```

### 2. Настройте переменные окружения для kubelet

Чтобы kubelet также использовал настройки прокси, создайте или отредактируйте файл `kubelet-env.conf`:

```bash
sudo mkdir -p /etc/systemd/system/kubelet.service.d
sudo nano /etc/systemd/system/kubelet.service.d/override.conf
```

Добавьте следующие строки в файл:

```ini
[Service]
Environment="HTTP_PROXY=http://172.16.8.21:3128"
Environment="HTTPS_PROXY=http://172.16.8.21:3128"
Environment="NO_PROXY=localhost,127.0.0.1,172.16.8.0/24"
```

### 3. Перезапустите kubelet

После настройки прокси для kubelet, перезапустите его:

```bash
sudo systemctl daemon-reload
sudo systemctl restart kubelet
```

### 4. Настройка kubectl

Если вы будете использовать `kubectl`, вам также могут понадобиться прокси-переменные среды для вашей пользовательской сессии. Вы можете добавить следующие строки в файл `~/.bashrc` или `~/.bash_profile`:

```bash
export HTTP_PROXY="http://172.16.8.21:3128"
export HTTPS_PROXY="http://172.16.8.21:3128"
export NO_PROXY="localhost,127.0.0.1,172.16.8.0/24"
```

Примените изменения:

```bash
source ~/.bashrc
```

### 5. Применение настроек kubeadm

Когда вы выполните `kubeadm init`, убедитесь, что вы запускаете его с учетом прокси-серверов. В некоторых случаях может потребоваться указать параметры при запуске, либо настроить файл `/etc/kubernetes/manifests/kube-apiserver.yaml`, чтобы включить настройки прокси.

### 6. Настройки для загрузки образов

Если вы все равно сталкиваетесь с проблемами загрузки образов, вы можете проверить логи `containerd`:

```bash
sudo journalctl -u containerd
```

или логи kubelet:

```bash
sudo journalctl -u kubelet
```

Также попробуйте вручную загрузить образы через `ctr` (интерфейс командной строки для containerd) с учетом прокси, чтобы убедиться, что проблемы связаны с настройкой прокси, а не с самим `kubeadm`.

### 7. Ограничения

Обратите внимание, что некоторые образы могут быть заблокированы на вашем прокси-сервере. Убедитесь, что ваш прокси позволяет работать с необходимыми реестрами образов (например, Docker Hub, ghcr.io и т.д.) и что для них открыты соответствующие порты.

С учетом всех этих шагов, ваш кластер Kubernetes должен успешно работать через прокси-сервер.
Сделать export http_proxy перед запуском kubeadm либо добавить export http_proxy в /etc/profile  и т.п. 
Проверить, что образы вообще доступны даже через прокси.
Похожие вопросы