Контекст kubectl против кластера

В чем разница между контекстом и кластером в мире конфига kubectl и kubernetes? Например, я вижу эти команды:

Available Commands:
  current-context Displays the current-context
  delete-cluster  Delete the specified cluster from the kubeconfig
  delete-context  Delete the specified context from the kubeconfig
  get-clusters    Display clusters defined in the kubeconfig
  get-contexts    Describe one or many contexts
  rename-context  Renames a context from the kubeconfig file.
  set             Sets an individual value in a kubeconfig file
  set-cluster     Sets a cluster entry in kubeconfig
  set-context     Sets a context entry in kubeconfig

и в.kube/config я вижу:

- context:
    cluster: arn:aws:eks:us-west-2:91XXXXXXX71:cluster/ignitecluster
    namespace: ignite
    user: arn:aws:eks:us-west-2:91XXXXXXX71:cluster/ignitecluster
  name: arn:aws:eks:us-west-2: 91XXXXXXX71:cluster/ignitecluster

2 ответа

Кластеры

Кластер - это место, где настраиваются все компоненты, возможности и рабочие нагрузки Kubernetes.

Кластеры в Kubernetes идентифицируются соответствующими сертификатами центров сертификации (CA). Например, у вас есть три кластера.

rewanth@ubuntu:~$ cat ~/.kube/config
...
clusters:
- cluster:
    certificate-authority: /home/rewanth/.minikube/development-ca.crt
    server: https://192.168.177.136:8443
  name: development
...

Пользователи

Пользователи в Kubernetes идентифицируются соответствующими сертификатами клиента / пользователя. Например, предположим, что у вас есть три пользователя.

rewanth@ubuntu:~$ cat ~/.kube/config
...
users:
- name: admin
  user:
    client-certificate: /home/rewanth/.minikube/admin.crt
    client-key: /home/rewanth/.minikube/admin.key
...

Контексты

Итак, пользователь должен предоставить как cluster сертификаты и user сертификаты для проверки и запуска рабочих нагрузок на целевом ресурсе.

Нам нужно предоставить три сертификата для выполнения рабочих нагрузок в любом кластере.

  • Один сертификат ЦС для кластера
  • Два сертификата для пользователя: закрытый ключ и открытый ключ

Контекст упрощает эту работу, комбинируя конфигурации / сертификаты пользователя и кластера.

rewanth@ubuntu:~$ cat ~/.kube/config
...
contexts:
- context:
    cluster: staging
    user: user1
  name: Context1
- context:
    cluster: development
    user: admin
  name: Context2
- context:
    cluster: development
    namespace: private
    user: user1
  name: Context4
...

Итак, просто ссылаясь на Context2 означает, что мы хотим войти в Development кластер как admin пользователь.

Context4 означает, что мы хотим войти в private пространство имен в development кластер как user1 пользователь.

Context1 означает, что мы хотим войти в staging кластер как user1 пользователь.

ВАЖНАЯ ЗАМЕТКА

Контекст не создает новых пользователей / кластеров. Контекст просто устанавливает новое сопоставление, упрощающее переключение между несколькими кластерами.

Кластер определяет конечную точку соединения для API Kubernetes кластера.

Пользователь определяет учетные данные для подключения к кластеру.

Контекст определяет как кластер, так и пользователя.

Кластер: Kubernetes объединяет отдельные физические или виртуальные машины в кластер, используя общую сеть для связи между каждым сервером. Этот кластер является физической платформой, в которой настроены все компоненты, возможности и рабочие нагрузки Kubernetes.

Контекст. Контекст - это просто набор параметров доступа, который содержит кластер Kubernetes, пользователя и пространство имен.

Текущий контекст - это кластер, который в настоящее время используется по умолчанию для kubectl, и все команды kubectl выполняются для этого кластера.

Из https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl:

A context is a group of access parameters.
Each context contains a Kubernetes cluster, a user, and a namespace.
The current context is the cluster that is currently the default for kubectl:
all kubectl commands run against that cluster

Итак, contextX = {clusterX, userX, namespaceX}

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