K8S: преобразовать аргументы командной строки "kubeadm init" в YAML "--config" - PullRequest
1 голос
/ 07 октября 2019

Фон

Я пытаюсь настроить кластер через kubeadm. Обычно я создаю (тестовый) кластер с помощью:

sudo kubeadm init --pod-network-cidr 10.244.0.0/16

Этот параметр, по-видимому, в конечном итоге находит свой путь в определении статического модуля для контроллера controller (/etc/kubernetes/manifests/kube-controller-manager.yaml):

- --cluster-cidr=10.244.0.0/16

Большие порции sudo vim /etc/kubernetes/manifests/kube-controller-manager.yaml:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    component: kube-controller-manager
    tier: control-plane
  name: kube-controller-manager
  namespace: kube-system
spec:
  containers:
  - command:
    - kube-controller-manager
    - --allocate-node-cidrs=true
    - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
    - ...
    - --cluster-cidr=10.244.0.0/16

Вопрос 1:

Как передать этот параметр, --pod-network-cidr=10.244.0.0/16 через файл конфигурации, т.е. kubeadm init --config my_config.yaml? Я нашел образец шаблона конфигурации в неофициальной вики-документации по K8S , но я не могу найти вообще никакой документации, которая сопоставляет эти аргументы командной строки с kubeadm с их kubeadm_config.yaml эквивалентами.

Существует также документ, показывающий, как я могу создать базовое определение статического модуля / yaml с помощью kubeadm config print init-defaults > kubeadm_config.yaml, но, опять же, нет документации, показывающей, как установить pod-network-cidr путем измененияи применения этого yaml файла (т.е. kubeadm upgrade -f kubeadm_config.yaml).

Пример вывода kubeadm config view:

apiServer:
  extraArgs:
    authorization-mode: Node,RBAC
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.15.4
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

Вопрос 2:

Как я могу сделать выше, но передать что-то вроде --experimental-cluster-signing-duration=0h30m0s? Я бы хотел поэкспериментировать с тестами, включающими ручное / автоматическое обновление всех kubeadm связанных сертификатов.


1 Ответ

1 голос
/ 08 октября 2019

1. В соответствии с официальной документацией :

Возможно настроить kubeadm init с файлом конфигурации вместо флагов командной строки, инекоторые расширенные функции могут быть доступны только в качестве параметров файла конфигурации. Этот файл передается с параметром --config.

Конфигурацию по умолчанию можно распечатать с помощью команды kubeadm config print .

Рекомендуется перенестистарая конфигурация v1beta1 для v1beta2 с помощью команды kubeadm config migrate .

Во время kubeadm init, kubeadm загружает объект ClusterConfiguration в ваш кластер в ConfigMap с именем kubeadm-config в пространстве имен системы kube. ,Эта конфигурация затем читается во время kubeadm join, kubeadm reset и kubeadm upgrade. Для просмотра этого вызова ConfigMap kubeadm config view.

Вы можете использовать kubeadm config print для печати конфигурации по умолчанию и kubeadm config migrate для преобразования старых файлов конфигурации в новую версию. kubeadm config images list и kubeadm config images pull могут использоваться для отображения и извлечения изображений, которые требуются kubeadm.

Подсети определяются аргументом --pod-network-cidr в kubeadm ИЛИ файлом конфигурации, таким как приведенный ниже пример:

apiVersion: kubeadm.k8s.io/v1alpha3
kind: InitConfiguration
api:
  advertiseAddress: 0.0.0.0
  bindPort: 6443
kubernetesVersion: v1.12.1
---
apiVersion: kubeadm.k8s.io/v1alpha3
kind: ClusterConfiguration
networking:
  podSubnet: 192.168.0.0/24

2. Мне не удалось найти ничего подобного ни в официальной документации, ни в других источниках.

Вместо этого вы можете использовать kube-controller-manager для передачи такой конфигурации.

Пожалуйста, дайте мне знать, если это помогло.

...