Введение
Команда kubectl create является важным инструментом для создания ресурсов Kubernetes. Она использует файлы YAML или JSON для определения ресурсов, таких как пространства имен (namespaces), развертывания (deployments), сервисы (services), секреты (secrets) и ConfigMaps. В этом лабораторном занятии вы научитесь пошагово создавать эти ресурсы и понять их роль в Kubernetes.
По завершении этого лабораторного занятия вы сможете:
- Запустить и проверить кластер Minikube.
- Создать и проверить различные ресурсы Kubernetes с помощью команды
kubectl create.
Запустить Minikube и проверить кластер
Перед началом работы с Kubernetes вам нужен работающий кластер. Minikube предоставляет легковесный локальный кластер Kubernetes.
Перейдите в каталог проекта:
Откройте терминал и перейдите в каталог по умолчанию:
cd /home/labex/projectЗапустите Minikube:
Запустите Minikube для инициализации кластера:
minikube start- Minikube создает однодневный кластер Kubernetes. Этот шаг может занять несколько минут.
Проверьте статус Minikube:
Убедитесь, что Minikube успешно запустился:
minikube statusПроверьте, чтобы компоненты, такие как
apiserverиkubelet, были перечислены какRunning.Подтвердите конфигурацию Kubernetes:
Убедитесь, что
kubectlподключен к кластеру Minikube:kubectl cluster-infoЭта команда отображает сведения о сервере API и других компонентах.
Если Minikube не запускается, используйте minikube delete для сброса и повторите попытку.
Исследуйте команду kubectl create
Команда kubectl create предоставляет несколько подкоманд для создания ресурсов Kubernetes. Она помогает управлять созданием таких ресурсов, как пространства имен (namespaces), развертывания (deployments), сервисы (services), секреты (secrets) и ConfigMaps.
Выполните следующую команду, чтобы просмотреть доступные подкоманды kubectl create:
kubectl create -h
Вы увидите следующий вывод:
Create a resource from a file or from stdin.
JSON and YAML formats are accepted.
Examples:
## Create a pod using the data in pod.json
kubectl create -f./pod.json
## Create a pod based on the JSON passed into stdin
cat pod.json | kubectl create -f -
## Edit the data in registry.yaml in JSON then create the resource using the edited data
kubectl create -f registry.yaml --edit -o json
Available Commands:
clusterrole Создать кластерную роль (cluster role)
clusterrolebinding Создать привязку кластерной роли (cluster role binding) для определенной кластерной роли
configmap Создать ConfigMap из локального файла, каталога или литерального значения
cronjob Создать CronJob с указанным именем
deployment Создать развертывание (deployment) с указанным именем
ingress Создать Ingress с указанным именем
job Создать задание (job) с указанным именем
namespace Создать пространство имен (namespace) с указанным именем
poddisruptionbudget Создать бюджет нарушения пода (pod disruption budget) с указанным именем
priorityclass Создать класс приоритета (priority class) с указанным именем
quota Создать квоту (quota) с указанным именем
role Создать роль (role) с одним правилом
rolebinding Создать привязку роли (role binding) для определенной роли или кластерной роли
secret Создать секрет (secret) с использованием указанной подкоманды
service Создать сервис (service) с использованием указанной подкоманды
serviceaccount Создать учетную запись сервиса (service account) с указанным именем
token Запросить токен учетной записи сервиса
Просмотрите доступные подкоманды и их описания, чтобы понять, как можно использовать команду kubectl create.
Создание пространства имен (Namespace)
Пространства имен (Namespaces) позволяют вам организовывать и изолировать ресурсы в Kubernetes.
Создание файла определения пространства имен:
Откройте новый файл с именем
namespace.yaml:nano namespace.yamlОпределение пространства имен:
Добавьте следующее содержимое:
apiVersion: v1 kind: Namespace metadata: name: mynamespaceСохраните файл, нажав
Ctrl+X, затемYиEnter.Применение пространства имен:
Создайте пространство имен:
kubectl create -f namespace.yamlПроверка пространства имен:
Проверьте список пространств имен:
kubectl get namespacesУбедитесь, что
mynamespaceпоявляется в выводе.
Создание развертывания (Deployment)
Развертывания (Deployments) управляют и поддерживают желаемое состояние подов (Pods).
Создание файла определения развертывания:
Откройте файл с именем
deployment.yaml:nano deployment.yamlОпределение развертывания:
Добавьте следующее содержимое для развертывания трех реплик контейнера Nginx:
apiVersion: apps/v1 kind: Deployment metadata: name: mydeployment namespace: mynamespace spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: nginx-container image: nginxСохраните файл.
Применение развертывания:
Создайте развертывание:
kubectl create -f deployment.yamlПроверка развертывания:
Проверьте развертывание и его поды:
kubectl get deployments -n mynamespace kubectl get pods -n mynamespaceУбедитесь, что запущено три пода.
Создание сервиса (Service)
Сервис (Service) обеспечивает стабильный сетевой доступ к набору подов (Pods).
Создание файла определения сервиса:
Откройте файл с именем
service.yaml:nano service.yamlОпределение сервиса:
Добавьте следующее содержимое:
apiVersion: v1 kind: Service metadata: name: myservice namespace: mynamespace spec: selector: app: myapp ports: - protocol: TCP port: 80 targetPort: 80Сохраните файл.
Применение сервиса:
Создайте сервис:
kubectl create -f service.yamlПроверка сервиса:
Проверьте список сервисов:
kubectl get services -n mynamespaceУбедитесь, что
myserviceприсутствует в списке.
Создание секрета (Secret)
Секреты (Secrets) безопасно хранят конфиденциальную информацию, такую как пароли или API-ключи.
Создание файла определения секрета:
Откройте файл с именем
secret.yaml:nano secret.yamlОпределение секрета:
Добавьте следующее содержимое с значениями, закодированными в формате Base64:
apiVersion: v1 kind: Secret metadata: name: mysecret namespace: mynamespace type: Opaque data: username: dXNlcm5hbWU= ## Base64 for "username" password: cGFzc3dvcmQ= ## Base64 for "password"Сохраните файл.
Применение секрета:
Создайте секрет:
kubectl create -f secret.yamlПроверка секрета:
Проверьте список секретов:
kubectl get secrets -n mynamespaceУбедитесь, что
mysecretпоявляется в выводе.
Создание ConfigMap
ConfigMap (Конфигурационные карты) хранят конфигурационные данные в виде пар "ключ-значение".
Создание файла определения ConfigMap:
Откройте файл с именем
configmap.yaml:nano configmap.yamlОпределение ConfigMap:
Добавьте следующее содержимое:
apiVersion: v1 kind: ConfigMap metadata: name: myconfigmap namespace: mynamespace data: database.host: "example.com" database.port: "5432"Сохраните файл.
Применение ConfigMap:
Создайте ConfigMap:
kubectl create -f configmap.yamlПроверка ConfigMap:
Проверьте список ConfigMap:
kubectl get configmaps -n mynamespaceУбедитесь, что
myconfigmapпоявляется в выводе.
Резюме
В этом практическом занятии (lab) вы научились:
- Запускать и проверять кластер Minikube.
- Создавать ресурсы Kubernetes, такие как пространства имен (namespaces), развертывания (deployments), сервисы (services), секреты (secrets) и ConfigMap.
- Проверять статус этих ресурсов.
Освоив эти шаги, вы сможете эффективно управлять и развертывать приложения в Kubernetes. Практикуйте эти шаги, чтобы укрепить свое понимание!


