How to add flag to kubelet

4/1/2019

I want to deploy rook for kubernetes. I use 1 master and 3 worker and the host is ubuntu in baremetal. but the container stuck in creating container. after a lot of search i understand i should use this document https://github.com/rook/rook/blob/master/Documentation/flexvolume.md#most-common-readwrite-flexvolume-path that said

Configuring the Rook operator You must provide the above found FlexVolume path when deploying the rook-operator by setting the environment variable FLEXVOLUME_DIR_PATH. For example:

env: [...] - name: FLEXVOLUME_DIR_PATH value: "/var/lib/kubelet/volumeplugins" (In the operator.yaml manifest replace with the path or if you use helm set the agent.flexVolumeDirPath to the FlexVolume path)

Configuring the Kubernetes kubelet You need to add the flexvolume flag with the path to all nodes's kubelet in the Kubernetes cluster:

--volume-plugin-dir=PATH_TO_FLEXVOLUME (Where the PATH_TO_FLEXVOLUME is the above found FlexVolume path)

the question is how can i add flexvolume flag with the path to all nodes's kubelet ?

-- yasin lachini
kubernetes
kubernetes-rook

2 Answers

4/1/2019

There are two options.

I. set

KUBELET_EXTRA_ARGS=--FLEXVOLUME_DIR_PATH=/var/lib/kubelet/volumeplugins

within the file

/etc/default/kubelet

And restart kubelete service

sudo systemctl restart kubelet

II. You can set kubelet parameters via a config file.

For example:

kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
env:
- name: FLEXVOLUME_DIR_PATH
  value: "/var/lib/kubelet/volumeplugins"

Then, you just start the Kubelet with the --config flag set to the path of the Kubelet’s config file

sudo kubelet --config=/etc/default/kubelet/custom-conf.config

https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/

-- A_Suh
Source: StackOverflow

4/1/2019

@yasin lachini,
If you deploy kubernetes cluster on baremetal, you don't need to configure anything. That is because /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ is the kubelet default FlexVolume path and Rook assumes the default FlexVolume path if not set differently.

My env:
rook-ceph/operator.yml (use default FLEXVOLUME_DIR_PATH) :

...
        # Set the path where the Rook agent can find the flex volumes
        # - name: FLEXVOLUME_DIR_PATH
        #   value: "/usr/libexec/kubernetes/kubelet-plugins/volume/exec"
...

After deploy,on node:

# ls /usr/libexec/kubernetes/kubelet-plugins/volume/exec/
ceph.rook.io~rook  ceph.rook.io~rook-ceph-system  rook.io~rook  rook.io~rook-ceph-system
-- S.J
Source: StackOverflow