Kubernetes стал фактическим стандартом оркестрации контейнеров, предоставляя надежную платформу для управления и масштабирования контейнерных приложений. По своей сути Kubernetes организует рабочие нагрузки в объекты, которые представляют различные компоненты приложения. В этой статье мы углубимся в две фундаментальные категории объектов в Kubernetes: модули и службы. Мы изучим их функциональные возможности, обсудим методы их создания и управления, а также предоставим примеры кода, иллюстрирующие каждую концепцию.
- Модули:
Модули — это основные строительные блоки Kubernetes, представляющие один экземпляр запущенного процесса в кластере. Они инкапсулируют один или несколько контейнеров и необходимые им общие ресурсы, такие как тома хранения и сетевые настройки. Вот несколько методов работы с модулями:
a) Создание модуля.
Чтобы создать модуль, вы можете определить его конфигурацию с помощью файла манифеста YAML или JSON и использовать команду kubectl create
. Вот пример YAML-манифеста для простого модуля NGINX:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
b) Масштабирование модулей:
Kubernetes позволяет масштабировать модули по горизонтали, регулируя желаемое количество реплик. Вы можете использовать команду kubectl scale
или изменить поле replicas
в файле манифеста модуля. Например:
kubectl scale --replicas=3 deployment/nginx-deployment
- Сервисы.
Сервисы предоставляют согласованную и стабильную конечную точку для доступа к модулям в Kubernetes, позволяя абстрагировать базовые детали сети. Они обеспечивают балансировку нагрузки и обнаружение сервисов внутри кластера. Вот несколько способов работы с сервисами:
a) Создание службы.
Как и модули, службы можно создавать с использованием файла манифеста YAML или JSON. В следующем примере показано базовое определение сервиса для модуля NGINX:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
b) Предоставление доступа к службам.
Чтобы предоставить доступ к службам за пределами кластера, вы можете изменить тип службы на NodePort
или LoadBalancer
. Альтернативно вы можете использовать Ingress-контроллер для более продвинутой маршрутизации и завершения SSL. Вот пример предоставления сервиса с использованием типа NodePort:
kubectl expose deployment/nginx-deployment --type=NodePort --port=80
В этой статье мы исследовали две основные категории объектов в Kubernetes: модули и службы. Мы обсудили различные методы создания и управления этими объектами, а также примеры кода, иллюстрирующие каждую концепцию. Используя возможности модулей и сервисов, вы можете эффективно развертывать и масштабировать контейнерные приложения в кластере Kubernetes.