Comments (13)
Hi Darcy, what version of Kubernetes are you running on?
from external-attacher.
Hi David,
My kubernetes version is v1.12.3.
# kubelet --version
Kubernetes v1.12.3
from external-attacher.
@darcyllingyan This looks like a known issue that we fixed in Kubernetes 1.13. We will look into cherry-picking the change into 1.12 which would put it in the next patch release.
For now the workaround would be to remove your driver from the cluster and then deploy it again. That should solve the issue in most cases
from external-attacher.
Hi David,
Thanks for the response!
For now the workaround would be to remove your driver from the cluster and then deploy it again. That should solve the issue in most cases
You mean I remove the the sidecar containers(external-attacher, external-provosioner, node-driver-registratar) and the driver, then deploy again? This method seems don't take effect as I have remove/deploy several times.
Thanks
Darcy
from external-attacher.
Hi David,
Besides, I have created the csinodeinfo CRD and enable the feature-gates for CSINodeInfo, I can't get the csinodeinfo successfully.
# kubectl get crd
NAME CREATED AT
csidrivers.csi.storage.k8s.io 2019-02-19T09:16:55Z
csinodeinfos.csi.storage.k8s.io 2019-02-26T15:39:29Z
# kubectl get csinodeinfo
No resources found.
···
from external-attacher.
@darcyllingyan what was the sequence of steps you followed? I believe in 1.12
you must:
- Install the
CSINodeInfo
CRD - Deploy your driver, making sure that the driver goes through plugin registration mechanism (the uds must be dropped in the right place
/var/lib/kubelet/plugins_registry/
) kubectl get csinodeinfo
should show your driver.
Let me know if that is not the case, there may be another bug we need to look into...
from external-attacher.
@darcyllingyan to clarify, in your top post you did not have the CRD installed and did not enable CSINodeInfo feature gate, right?
from external-attacher.
@davidz627 ,@verult,
Yes, I follow your sequence and still the kubectl get csinodeinfo
reports nothing.
Just now I delete all the related resources(crd, driver, pvc), and re-created with the sequence again.
Below is my procedure:
- Add the CSIDriverRegistry=true feature-gates for kube-apiserver and kubelet.
- The initial state after I delete all the resources, not sure why the csidrivers still exist even I deleted all the drivers( As below, the kubectl get pod -n kube-system|grep csi shows nothing).
# kubectl get crd|grep csi
csidrivers.csi.storage.k8s.io 2019-02-19T09:16:55Z
# kubectl get pod -n kube-system|grep csi
#
- Create the CRD
# kubectl apply -f crd.yaml
customresourcedefinition.apiextensions.k8s.io/csinodeinfos.csi.storage.k8s.io created
# kubectl get crd|grep csi
csidrivers.csi.storage.k8s.io 2019-02-19T09:16:55Z
csinodeinfos.csi.storage.k8s.io 2019-02-28T00:55:47Z
- Install the driver
# kubectl apply -f manifests/rbac/
serviceaccount/csi-attacher created
clusterrole.rbac.authorization.k8s.io/external-attacher-runner created
clusterrolebinding.rbac.authorization.k8s.io/csi-attacher-role created
clusterrolebinding.rbac.authorization.k8s.io/csi-attacher-role-psp created
secret/csi-ca-cinderplugin created
serviceaccount/csi-nodeplugin created
clusterrole.rbac.authorization.k8s.io/csi-nodeplugin created
clusterrolebinding.rbac.authorization.k8s.io/csi-nodeplugin created
clusterrolebinding.rbac.authorization.k8s.io/csi-nodeplugin-psp created
serviceaccount/csi-provisioner created
clusterrole.rbac.authorization.k8s.io/external-provisioner-runner created
clusterrolebinding.rbac.authorization.k8s.io/csi-provisioner-role created
clusterrolebinding.rbac.authorization.k8s.io/csi-provisioner-role-psp created
secret/cloud-config created
serviceaccount/csi-snapshotter created
clusterrole.rbac.authorization.k8s.io/external-snapshotter-runner created
clusterrolebinding.rbac.authorization.k8s.io/csi-snapshotter-role created
clusterrolebinding.rbac.authorization.k8s.io/csi-snapshotter-role-psp created
# kubectl apply -f manifests/cinder-csi-plugin/
service/csi-attacher-cinderplugin created
statefulset.apps/csi-attacher-cinderplugin created
daemonset.apps/csi-nodeplugin-cinderplugin created
service/csi-provisioner-cinderplugin created
statefulset.apps/csi-provisioner-cinderplugin created
service/csi-snapshotter-cinder created
statefulset.apps/csi-snapshotter-cinder created
# kubectl get pod -n kube-system|grep csi
csi-attacher-cinderplugin-0 2/2 Running 0 31s
csi-nodeplugin-cinderplugin-5bjp5 2/2 Running 0 31s
csi-nodeplugin-cinderplugin-fhhdv 2/2 Running 0 30s
csi-nodeplugin-cinderplugin-fpwwg 2/2 Running 0 30s
csi-nodeplugin-cinderplugin-z5z7f 2/2 Running 0 30s
csi-provisioner-cinderplugin-0 2/2 Running 0 30s
csi-snapshotter-cinder-0 2/2 Running 0 30s
- The csinodeinfo shows nothing:
# kubectl get csinodeinfos
No resources found.
Note: In the guide, minimum requirement of node-driver-registrar is v1.13 https://github.com/kubernetes-csi/node-driver-registrar#compatibility , I'm not sure whether this workaround can take effect for the node-driver-registrar?
Thanks
Darcy
from external-attacher.
The CSINodeInfo feature gate needs to be set to true on both apiserver and kubelet as well
from external-attacher.
If there's a gap in our documentation about enabling this feature gate please let us know, thanks!
from external-attacher.
@verult ,
Thanks for the response.
Sorry for the misleading about my step 1.
- Add the CSIDriverRegistry=true feature-gates for kube-apiserver and kubelet.
In fact, I have enabled the CSINodeInfo(not only CSIDriverRegistry) feature-gates both on apiserver and kubelet, but it still shows nothing for the kubectl get csinodeinfos
.
Below is my changing process:
- For the apiserver feature-gate
# cat /etc/kubernetes/manifests/kube-apiserver.yml
- --feature-gates=PodPriority=true,ExperimentalCriticalPodAnnotation=true,SCTPSupport=true,CSINodeInfo=true,CSIDriverRegistry=true
- For the kubelet:
# cat /etc/kubernetes/kubelet-config.yml
featureGates:
PodPriority: true
ExperimentalCriticalPodAnnotation: true
RotateKubeletClientCertificate: true
RotateKubeletServerCertificate: true
SCTPSupport: true
CSINodeInfo: true
CSIDriverRegistry: true
Thanks
Darcy
from external-attacher.
Would you mind sharing your DaemonSet spec for the node deployment? I'm wondering if node-driver-registrar args are set correctly.
The other thing I could think of is GetNodeId isn't implemented correctly, but if you are using a published Cinder driver it's probably OK.
from external-attacher.
As I don't have a Kubernetes 1.12 and only Kubernetes 1.13, will close the issue now and will try later when I have Kubernetes 1.12.
from external-attacher.
Related Issues (20)
- Attachment reconciler is incorrectly using nodeid annotation HOT 5
- Retry on attach error does not respect exponential backoff
- csi-attacher:v3.4.0 image unavailable HOT 1
- change default fstype from "ext4" to empty string HOT 4
- Single timeout for attachment/detachment and reconcile resync operations not always appropriate HOT 20
- Emit events on detach errors HOT 18
- Version 3.5.0 vulnerability with CVE-2022-1996 HOT 11
- Question about reconciling (reconcileVA) based on RPC_LIST_VOLUMES_PUBLISHED_NODES HOT 6
- Broken link of `contributor cheat sheet` needs to fix
- csi attacher report panic in log HOT 5
- Uncertain handling for attach HOT 15
- VolumeAttachment has attached status true but actual state false HOT 12
- Readme has incorrect compatibility information for kubernetes version HOT 5
- 7 High Security vulnerability on latest CSI-attacher:v4.3.0 sidecar image HOT 7
- `fault.CnsNotRegisteredFault.summary` while consuming a volume by a pod HOT 2
- Attacher doesn't allow to set volumes limit in the ListVolume request
- VolumeAttachment takes too long to remove HOT 6
- ListVolumes : Panic detected on v4.4.1 HOT 5
- CSI attacher: Does version 2.2.1 have an ARM architecture? What is the download address? Thank you HOT 4
- Upgrade external-attacher to use Debian 12 Distroless HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from external-attacher.