首页 > 解决方案 > 使用 Tectonic 启用 Kubernetes 功能门

问题描述

我必须为客户端部署具有构造的 kubernetes 集群,并且我需要启用 kubernetes 功能门,这可能吗?

需要的功能门:https ://kubernetes.io/blog/2018/04/13/local-persistent-volumes-beta/

需要:https ://www.arangodb.com/2018/03/arangodb-operator-kubernetes-stateful-cluster-deployments/

Kubernetes 版本:1.9.6(由 1.9.6-tectonic.1 提供)

标签: kubernetestectonic-coreos

解决方案


在 kubernetes 1.10 之后,您无需启用功能门即可在 kubernetes 集群中使用本地存储。

您可以直接使用local-storage与任何其他存储类相同的内容。

请看我下面的答案,如何local-storage在 kubernetes 中设置 PV、PVC。

编辑:当你在 kubernetes 1.9 上时,你可以这样做:

您需要在使用kubeadm init --config=config.yamltoapiserver和启动集群时提供功能controller-managerscheduler。请参考以下配置:

 apiVersion: kubeadm.k8s.io/v1alpha1
 kind: MasterConfiguration
 apiServerExtraArgs:
   service-node-port-range: 80-32767
   feature-gates: "PersistentLocalVolumes=true,VolumeScheduling=true,MountPropagation=true"
 controllerManagerExtraArgs:
   feature-gates: "PersistentLocalVolumes=true,VolumeScheduling=true,MountPropagation=true"
 schedulerExtraArgs:
   feature-gates: "PersistentLocalVolumes=true,VolumeScheduling=true,MountPropagation=true"

然后您需要创建自己的存储类,因为不存在本地存储类。所以创建你自己的类如下:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage-data
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

现在您可以通过以下方式创建您的 PV 和 PVC:

光伏定义:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-mariadb-0
  labels:
    pod-name: mariadb-0
  annotations:
    "volume.alpha.kubernetes.io/node-affinity": '{
      "requiredDuringSchedulingIgnoredDuringExecution": {
        "nodeSelectorTerms": [
          { "matchExpressions": [
              { "key": "kubernetes.io/hostname",
                "operator": "In",
                "values": ["prod-mysql-0"]
              }
          ]}
        ]}}'
spec:
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage-data
  local:
    path: /mnt/local-storage/mysql-data-0

PVC定义:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    app: mariadb
  name: mysql-mariadb-0
  namespace: mysql
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
  storageClassName: local-storage-data
  selector:
    matchLabels:
      pod-name: mariadb-0

是否可以将不同的 pod 挂载到本地持久卷的同一部分?

希望这可以帮助


推荐阅读