Поиск по сайту:

Музыка — универсальный язык человечества (Г. Лонгфелло).

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

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
1 октября 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

 

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

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

 

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

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

 

Читать  Видеоконференцсвязь в 2020 году

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

Теперь проделаем ту же операцию, используя декларативный подход, т.е. команду 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 vs create? Какой использовать?

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читайте также

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close