Не в состоянии запустить kubeadm init

Со ссылкой на https://github.com/kubernetes/kubeadm/issues/1239. Как мне настроить и запустить последнюю версию kubeadm?

kubeadm_new.config генерируется путем миграции конфигурации: kubeadm config migrate --old-config kubeadm_default.config --new-config kubeadm_new.config, Содержание kubeadm_new.config:

apiEndpoint:
  advertiseAddress: 1.2.3.4
  bindPort: 6443
apiVersion: kubeadm.k8s.io/v1alpha3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: khteh-t580
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiVersion: kubeadm.k8s.io/v1alpha3
auditPolicy:
  logDir: /var/log/kubernetes/audit
  logMaxAge: 2
  path: ""
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: ""
etcd:
  local:
    dataDir: /var/lib/etcd
    image: ""
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.12.2
networking:
  dnsDomain: cluster.local
  podSubnet: ""
  serviceSubnet: 10.96.0.0/12
unifiedControlPlaneImage: ""

Я изменил "kubernetesVersion: v1.12.2" в kubeadm_new.config, и он, кажется, прогрессирует дальше и теперь застрял в следующей ошибке:

failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false.

Как мне установить fail-swap-on на FALSE, чтобы он заработал?

1 ответ

Kubeadm поставляется с командой, которая печатает конфигурацию по умолчанию, поэтому вы можете проверить каждое из назначенных значений по умолчанию с помощью: kubeadm config print-default

В вашем случае, если вы хотите отключить проверку подкачки в kubelet, вам нужно добавить следующие строки в вашу текущую конфигурацию kubeadm:

---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
failSwapOn: false

Вы не упомянули, почему решили отключить своп.

Я бы не стал рассматривать это как первый вариант - не потому, что подкачка памяти - плохая практика (это полезный и базовый механизм ядра), а потому, что кажется, что Kubelet не предназначен для правильной работы с включенной подкачкой.

K8S очень четко описывает эту тему, как вы можете видеть в установке Kubeadm:

Своп отключен. Вы ДОЛЖНЫ отключить своп, чтобы кубелет работал правильно.

Я бы порекомендовал прочитать об исключении модулей конечного пользователя и соответствующих функциях, которые K8S предоставляет для определения приоритета памяти модулей:

1) 3 класса qos - убедитесь, что ваши высокоприоритетные рабочие нагрузки выполняются с Guaranteed (или по крайней мере Burstable) класс.

2) Приоритет и приоритет пакетов.

Другие вопросы по тегам