Кубернетес — Кубектл
Предварительное условие: 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
Примечание. Если мы удалим пространство имен перед модулем, модуль будет автоматически удален вместе с другими ресурсами в этом пространстве имен.