Поиск по сайту:
...Узнаешь рожденных от крови! (Овидий).

kubectl apply vs create. Какую команду использовать для создания ресурсов в кластерной среде Kubernetes?

01.10.2020
kubectl apply vs create. Какую команду использовать для создания ресурсов в кластерной среде Kubernetes?

kubectl apply и kubectl create представляют собой два разных подхода к созданию ресурсов в кластерной среде Kubernetes.

Оба они создают ресурсы либо из файла, либо из STDIN.

 

kubectl apply и create: два подхода к созданию ресурсов

Теперь давайте рассмотрим детали и поймем, как kubectl apply и create отличаются друг от друга при реализации.

 

kubectl create: императивное управление

kubectl create это то, что мы называем императивным управлением. При таком подходе вы указываете Kubernetes API, что хотите создать, заменить или удалить.

Проще говоря, create создает полностью новый объект (ранее не существовавший или удаленный).

 

kubectl apply: декларативное управление

kubectl apply является частью декларативного подхода к управлению, при котором изменения, которые вы могли применить к живому объекту (т. е. через scale), будут «поддерживаться», даже если вы apply вносите другие изменения в объект.

Проще говоря, apply вносит дополнительные изменения в существующий объект, определяя, что нам нужно.

Примечание
Оба подхода kubectl create и apply принимают форматы файлов JSON и YAML.

 

Понимание разницы между kubectl create и apply на примере

Мы будем использовать приведенный ниже файл YAML для создания модуля Kubernetes.

root@andreyex:~/pod-create# cat mypod.yml
apiVersion: v1
kind: Pod
metadata:
   name: create-vs-apply-demo
   labels:
      app: front-end
      rel: dev
spec:
  containers:
  - name: httpd
    image: docker.io/httpd
    imagePullPolicy: IfNotPresent
    ports:
      - containerPort: 80

 

Читать  Подстановка процессов: необычный, но продвинутый способ перенаправления ввода/вывода в Linux

Создадим Pod императивным способом, т. е. командой kubectl create:

root@andreyex:~/pod-create# kubectl create -f mypod.yml
pod/create-vs-apply-demo created

 

Перечислим статус модуля вместе с ярлыками:

root@andreyex:~/pod-create# kubectl get pods --show-labels
NAME                   READY   STATUS    RESTARTS   AGE   LABELS
create-vs-apply-demo   1/1     Running   0          8s    app=front-end,rel=dev

 

Теперь отредактируйте файл YAML и добавлю к нему дополнительную метку (демонстрация: applyVScreate).

root@andreyex:~/pod-create# cat mypod.yml
apiVersion: v1
kind: Pod
metadata:
   name: create-vs-apply-demo
   labels:
      app: front-end
      rel: dev
      demo: applyVscreate
spec:
  containers:
  - name: httpd
    image: docker.io/httpd
    imagePullPolicy: IfNotPresent
    ports:
      - containerPort: 80

 

Теперь давайте снова воспользуемся императивным подходом для применения изменений.

root@andreyex:~/pod-create# kubectl create -f mypod.yml
Error from server (AlreadyExists): error when creating "mypod.yml": pods "create-vs-apply-demo" already exists

 

Выдает ошибку и сообщает, что ресурс уже существует.

Теперь проделаем ту же операцию, используя декларативный подход, т.е. команду kubectl apply.

root@andreyex:~/pod-create# kubectl apply -f mypod.yml
pod/create-vs-apply-demo configured

 

Итак, на этот раз ресурс настроен. Проверьте сделанные изменения.

root@andreyex:~/pod-create# kubectl get pods --show-labels
NAME                   READY   STATUS    RESTARTS   AGE     LABELS
create-vs-apply-demo   1/1     Running   0          3m19s   app=front-end,demo=applyVscreate,rel=dev

 

Вы можете видеть, что к модулю был применен новый ярлык.

Мы считаем, что теперь вы должны иметь четкое представление о двух подходах.

 

Kubectl apply или create? Какой использовать?

Как вы хотите использовать эти концепции или методологию, зависит от варианта использования. Дело не в том, что хорошо, а что плохо.

Если вы хотите управлять версиями объекта k8s, то лучше использовать декларативный способ (kubectl apply), который помогает определить точность данных в объектах k8s.

Читать  Как открыть несколько файлов и переключаться между ними в редакторе VI

И если вы хотите просто создать какой – либо ресурс для поиска неисправностей, обучения или экспериментирование цели интерактивной идти с императивным подходом (kubectl create).

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Облачные вычисления резко изменили сценарий сервера. Многие платформы предоставляют бесплатные облачные серверы…

Спасибо!

Теперь редакторы в курсе.