Кубернетес — Кубектл

Опубликовано: 18 Февраля, 2023

Предварительное условие: Kubernetes

Kubectl — это инструмент командной строки, с помощью которого мы можем запускать команды и выполнять различные операции, такие как создание ресурсов, их истощение и перечисление ресурсов внутри кластера Kubernetes. Kubernetes предоставляет и поддерживает этот инструмент. Ниже мы увидим его синтаксис, какие ресурсы он создает и как их перечислить, а также увидим их логи.

Установка Кубектла:

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

  • линукс
  • macOS
  • Окна

После установки Kubectl в соответствующей среде вы можете выполнить перекрестную проверку, выполнив приведенную ниже команду.

$ kubectl version 

Синтаксис:

$ kubectl [command] [TYPE] [NAME] [flags]
  • Команда: это будет включать операцию, указанную ниже, которую вы хотите выполнить в отношении определенного ресурса.
    • Создавать
    • получить
    • описывать
    • Удалить
  • Тип — здесь вы должны указать конкретный ресурс, предоставляемый Kubernetes, который вы хотите создать, например модули, пространства имен, секреты, развертывание, наборы реплик и многое другое. Это чувствительно к регистру.
  • ИМЯ — Здесь мы укажем имя с учетом регистра.
  • flags — это будет использоваться для передачи флагов, таких как адрес или номер порта.

Как запускать команды для ресурсов, которые предоставляет kubectl.

Создайте ресурс с помощью Kubectl:

В Kubernetes внутри пространства имен создается ресурс, с помощью которого мы можем создавать другие ресурсы в отдельной среде.

Во-первых, мы создаем пространство имен, внутри которого мы создадим наш под.

$ kubectl create namespace geeksforgeeksnamespace

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

apiVersion: v1
kind: Pod
metadata:
 name: geeksforgeeks
 namespace: geeksforgeeksnamespace
spec:
 containers:
 - name: nginx
   image: nginx:1.14.2
   ports:
   - containerPort: 80

Приведенный выше файл представляет собой файл конфигурации, с помощью которого мы создаем модуль с именем geeksforgeeks в пространстве имен geeksforgeeksnamespace , которое является сервером Nginx. Точно так же мы можем создавать другие ресурсы, такие как секреты, наборы реплик и т. д., просто изменив имя перед типом и соответствующим образом указав значение ключа в метаданных и спецификации.

$ kubectl create -f geeksforgeekspod.yaml

Чтобы получить ресурсы:

Команда для просмотра всех пространств имен.

kubectl get namespaces

Чтобы увидеть пространство имен geeksforgeeksnamespace, выполните приведенную ниже команду.

$ kubectl get namespace

Команда для просмотра списка всех модулей.

$ kubectl get pods

Это покажет модули в пространстве имен по умолчанию. Чтобы перечислить модули в определенном пространстве имен, мы должны передать флаг -n и имя пространства имен.

$ kubectl get pods -n NAME_OF_NAMESPACE

Поэтому, если нам нужно перечислить модуль, который мы создали в пространстве имен geeksforgeeksnamespace, выполните приведенную ниже команду.

$ kubectl get pod -n geeksforgeeksnamespace 

Опишите ресурс:

Чтобы описать ресурс, мы должны запустить команду kubectl описать , а затем указать ресурс и пространство имен, в котором находится этот ресурс.

$ kubectl describe resource_name -n namespace_name

Итак, теперь мы опишем наш стручок.

$ kubectl describe pod geeksforgeeks -n geeksforgeeksnamespace
Name:         geeksforgeeks
Namespace:    geeksforgeeksnamespace
Priority:     0
Node:         cluc-control-plane/172.19.0.8
Start Time:   Sun, 15 May 2022 11:17:36 +0000
Labels:       <none>
Annotations:  cni.projectcalico.org/containerID: ce6d80d1a912
a3edda623aeab52c2995aee87e7c225d6258f888d70a36c79b68
             cni.projectcalico.org/podIP: 10.244.206.106/32
             cni.projectcalico.org/podIPs: 10.244.206.106/32
Status:       Running
IP:           10.244.206.106
IPs:
 IP:  10.244.206.106
Containers:
 nginx:
   Container ID:   containerd://b265bb64e9cea231b9e52a150f2
   1399b4d051000c2c5dc9bc03cf1de42d060ae
   Image:          nginx:1.14.2
   Image ID:       docker.io/library/nginx@sha256:f7988fb6c02e0
   ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
   Port:           80/TCP
   Host Port:      0/TCP
   State:          Running
     Started:      Sun, 15 May 2022 11:19:20 +0000
   Ready:          True
   Restart Count:  0
   Environment:    <none>
   Mounts:
     /var/run/secrets/kubernetes.io/serviceaccount
      from kube-api-access-gz2zs (ro)
Conditions:
 Type              Status
 Initialized       True 
 Ready             True 
 ContainersReady   True 
 PodScheduled      True 
Volumes:
 kube-api-access-gz2zs:
   Type:                    Projected (a volume that contains 
                             injected data from multiple sources)
   TokenExpirationSeconds:  3607
   ConfigMapName:           kube-root-ca.crt
   ConfigMapOptional:       <nil>
   DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                            node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

Удалить ресурсы:

Команда kubectl delete используется для удаления ресурсов путем передачи их имени и пространства имен, если мы удаляем другие ресурсы, отличные от пространства имен.

$ kubectl delete resourse
 resourse_name -n namespace_name

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

$ kubectl delete pod 
geeksforgeeks -n geeksforgeeksnamespace

Вы можете проверить, удален ли модуль, запустив kubectl get pod -n geeksforgeeksnamespace.

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

$ kubectl delete namespace 
geeksforgeeksnamespace

Примечание. Если мы удалим пространство имен перед модулем, модуль будет автоматически удален вместе с другими ресурсами в этом пространстве имен.