7. Продвинутые инструменты для работы с Kubernetes
Команда.kubectl.explain.выводит.документацию.для.заданного. типа.ресурсов: kubectl explain pods
На.самом.деле.exp.lain.по- зволяет.копнуть.настолько.глубоко,.насколько.вы.захотите
$ kubectl explain deploy.spec.template.spec.containers.livenessProbe.exec
KIND: Deployment
VERSION: apps/v1
RESOURCE: exec <Object>
DESCRIPTION:
One and only one of the following should be specified. Exec specifies the
action to take.
ExecAction describes a "run in container" action.
FIELDS:
command <[]string>
Command is the command line to execute inside the container, the working
directory for the command is root ('/') in the container's filesystem. The
command is simply exec'd, it is not run inside a shell, so traditional
shell instructions ('|', etc) won't work. To use a shell, you need to
explicitly call out to that shell. Exit status of 0 is treated as
live/healthy and non-zero is unhealthy.
создает.развертывание.для.выполнения.в.заданном.контейнере. Большинство. ресурсов. можно. создавать. явным. образом. с. помощью. команды. kubectl.create: kubectl create namespace my-new-namespace namespace "my-new-namespace" created Аналогично.kubectl.delete.и.удалит.ресурс: kubectl delete namespace my-new-namespace namespace "my-new-namespace" deleted Команда.kubectl.edit.дает.вам.возможность.просматривать.и.модифицировать. любые.ресурсы: kubectl edit deployments my-deployment Этим. вы. откроете. свой. стандартный. текстовый. редактор. с. файлом. манифеста. в.формате.YAML,.который.представляет.заданный.ресурс. Это. хороший. способ. получить. детальную. информацию. о. конфигурации. любого. ресурса,.но.также.вы.можете.в.редакторе.внести.и.необходимые.изменения..После. сохранения.файла.и.выхода.из.редактора.kubectl.обновит.ресурс.так,.словно.вы. применили.к.манифесту.ресурса.команду.kubectl.apply. Если.вы.допустили.какие-либо.ошибки.(например,.некорректный.формат.YAML),. kubectl.об.этом.сообщит.и.откроет.файл,.чтобы.вы.могли.исправить.проблему.
Не используйте императивные команды kubectl, такие как create или edit, в про- мышленных кластерах. Вместо этого всегда управляйте ресурсами с помощью YAML-манифестов в системе контроля версий и применяйте их командой kubectl apply (или используя чарты Helm).
kubectl diff
позволяет увидеть разницу между ресурсом в кластере и описанием ресурса в файле
императивные команды можно использовать для генерации манифестов
вместо того чтобы руками писать однотипные огромные шаблонные манифесты, можно генерировать их через kubectl
[node1 ~]$ kubectl run demo --image=cloudnatived/demo:hello --dry-run=client -o yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: demo
name: demo
spec:
containers:
- image: cloudnatived/demo:hello
name: demo
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
С.точки.зрения.Kubernetes.журналом.считается. все,.что.контейнер.записывает.в.потоки вывода сообщений об ошибках.—.это.то,.что. выводит.на.экран.программа,.запущенная.в.терминале.
$ kubectl --namespace kube-system logs --tail 5 openstack-cloud-controller-manager-8lpjb
I0701 17:37:55.155260 1 named_certificates.go:53] loaded SNI cert [0/"self-signed loopback"]: "apiserver-loopback-client@1625161074" [serving] validServingFor=[apiserver-loopback-client] issuer="apiserver-loopback-client-ca@1625161074" (2021-07-01 16:37:53 +0000 UTC to 2022-07-01 16:37:53 +0000 UTC (now=2021-07-01 17:37:55.155236083 +0000 UTC))
I0701 17:37:55.155317 1 secure_serving.go:197] Serving securely on [::]:10258
I0701 17:37:55.155379 1 leaderelection.go:243] attempting to acquire leader lease kube-system/cloud-controller-manager...
I0701 17:37:55.156540 1 tlsconfig.go:240] Starting DynamicServingCertificateController
E0701 17:48:33.165811 1 leaderelection.go:325] error retrieving resource lock kube-system/cloud-controller-manager: etcdserver: request timed out
k attach pod-name
- позволяет зааттачиться к поду
$ ksys attach coredns-558bd4d5db-6s25r
If you don't see a command prompt, try pressing enter.
^C
Кон- текст. —. это. сочетание. кластера,. пользователя. и. пространства. имен
Когда.вы.запускаете.команды.kubectl,.они.всегда.выполняются.в.текущем контек- сте
Это.замечательно.—.приготовить. изящный.однострочный.скрипт.командной.оболочки.для.интерактивной.отладки. и.исследования,.но.он.может.оказаться.слишком.сложным.для.чтения.и.обслужи- вания. Для. настоящих. системных. программистов,. которые. автоматизируют. промыш- ленные. рабочие. процессы,. мы. настоятельно. советуем. использовать. и. настоящие системные.языки.программирования..Язык.Go.—.логичный.выбор,.поскольку.он. удовлетворил.требованиям.создателей.Kubernetes,.и,.таким.образом,.данная.плат- форма.включает.в.себя.полноценную.клиентскую.библиотеку.(github.com/kubernetes/ client-go).для.программ.на.Go
No Comments