how do I enable mount propagation in Rancher - Kubernetes feature gates?

7/14/2018

How can I enable feature gates for my cluster in Rancher 2.0? I am in need of enabling the --feature-gates MountPropagation=true. This will enable me to use storage solutions like StorageOS, CephFS, etc

There are 2 use cases here :

  1. If the Rancher is setup already and running?
  2. If I am setting up the cluster from scratch?
-- damitj07
kubernetes
rancher
rke

2 Answers

4/27/2020

alternative (test is pending, blocked by https://github.com/rancher/rancher/issues/26261):

step 1: Open Rancher2.0 UI

step 2: Click edit for cluster (in menu with three vertical dots)

step 3: Click the button "edit as YAML" next to "Cluster Options"

step 4: find "services.kubelet" (or "services.WhatYouNeed")

step 5: add or edit extra_args similar to this:

    kubelet:
      extra_args:
        feature-gates: rancherKubernetesEngineConfig=true

(according to https://rancher.com/docs/rke/latest/en/config-options/services/services-extras/#extra-args)

step 6: click save (at bottom)

create new cluster

You can also edit "Cluster Options" as yaml when creating a new cluster. Probably this can also be included as an "rke template".

-- simohe
Source: StackOverflow

7/17/2018

Hello and hope this helps someone, After much googling and help from awesome people at Rancher I got the solution for this. Here is what you can do to set the feature gates flags for the Kubernetes engine RKE.

step 1: Open Rancher2.0 UI

step 2: View cluster in API

enter image description here

step 3: Click edit and modify the rancherKubernetesEngineConfig input box

enter image description here

  • Find the services key.
  • Then add extra args for kubelet in below format

    "services": {
    "etcd": { "type": "/v3/schemas/etcdService" },
    "kubeApi": {
        "podSecurityPolicy": false,
        "type": "/v3/schemas/kubeAPIService",
        "extraArgs": { "feature-gates": "PersistentLocalVolumes=true, VolumeScheduling=true,MountPropagation=true" }
    },
    "kubeController": { "type": "/v3/schemas/kubeControllerService" },
    "kubelet": {
        "failSwapOn": false,
        "type": "/v3/schemas/kubeletService",
        "extraArgs": { "feature-gates": "PersistentLocalVolumes=true, VolumeScheduling=true,MountPropagation=true" }
    }
    

step 4: Click show request .. you get a curl command and json request.

step 5: Verify the request body data which will be shown.

step 6: Make sure the key's which are not applicable are set to null. e.g amazonElasticContainerServiceConfig, azureKubernetesServiceConfig, googleKubernetesEngineConfig all need to null for me.

step 7: Click send request

You should get a response with status code 201. And your cluster will start updating. You can verify that your cluster RKE has updated by viewing the Cluster in API again.

-- damitj07
Source: StackOverflow