В Kubernetes контроллер допуска DefaultStorageClass — это мощная функция, которая позволяет вам определить класс хранилища по умолчанию для вашего кластера. Этот контроллер гарантирует, что все заявки на постоянные тома (PVC) без указанного класса хранилища автоматически назначаются классу по умолчанию. В этой статье блога мы углубимся в различные методы и предоставим примеры кода для эффективной настройки и использования контроллера допуска DefaultStorageClass.
Методы и примеры кода:
-
Использование kubectl:
Вы можете включить контроллер допуска DefaultStorageClass, изменив файл конфигурации сервера API Kubernetes (kube-apiserver.yaml
). Найдите флаг--enable-admission-plugins
и добавьтеDefaultStorageClass
в список плагинов. Вот пример:... spec: containers: - name: kube-apiserver command: - kube-apiserver - --enable-admission-plugins=...,DefaultStorageClass ...
-
Использование kubeadm:
Если вы используетеkubeadm
для загрузки кластера, вы можете изменить конфигурациюkubeletExtraArgs
вkubeadm-config.yaml
файл. Добавьте--enable-admission-plugins=DefaultStorageClass
, чтобы включить контроллер. Пример:... apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration kubeletExtraArgs: enable-admission-plugins: "DefaultStorageClass" ...
-
Использование Helm.
Если вы предпочитаете управлять ресурсами Kubernetes с помощью Helm, вы можете использовать файлvalues.yaml
для настройки контроллера доступа. Добавьте следующее, чтобы включить контроллер допуска DefaultStorageClass:admissionControl: plugins: - name: DefaultStorageClass
-
Использование Kubernetes API.
Вы также можете включить контроллер допуска DefaultStorageClass программно с помощью Kubernetes API. Вот пример на Python:from kubernetes import client, config config.load_kube_config() api_instance = client.AdmissionregistrationV1Api() body = client.V1beta1MutatingWebhookConfiguration( metadata=client.V1ObjectMeta(name="default-storage-class"), webhooks=[ client.V1beta1Webhook( name="default-storage-class.admission.example.com", client_config=client.V1beta1WebhookClientConfig( service=client.V1beta1ServiceReference( name="default-storage-class-webhook", namespace="default" ), ca_bundle="base64-encoded-ca-bundle", url="https://default-storage-class-webhook.default.svc" ), rules=[ client.V1beta1RuleWithOperations( operations=["CREATE"], api_groups=[""], api_versions=["v1"], resources=["persistentvolumeclaims"] ) ], admission_review_versions=["v1beta1"] ) ] ) api_instance.create_mutating_webhook_configuration(body)