DROPS: Storage EBS em seu Cluster K8S EC2
Aprenda a usar o storage EBS como SC em seu cluster EC2!
O que são drops?
São DUMPs mentais rápidos e rasteiros, simples e objetivos – que funcionam.
Geralmente de algo que eu acabei de fazer.
Eu – quase sempre – volto para detalhar mais cada passo.
Considere com a mesma qualidade de um rascunho ou uma anotação rápida.
De qualquer forma comenta ai qquer coisa, os comentários estão ligados nos DROPS ;)
Demanda
Configurar um storageclass EBS em um cluster K8S rodando via EC2.
ComoFaz?
crie o arquivo aws-ebs-secrets.yaml
vim ws-ebs-secrets.yaml
insira o conteúdo abaixo, e ajuste suas credenciais
apiVersion: v1
kind: Secret
metadata:
name: aws-secret
namespace: kube-system
stringData:
key_id: "SUA_ACCESS_KEY"
access_key: "SUA_SECRET_KEY"
aplique o manifesto
kubectl apply -f aws-ebs-secrets.yaml
agora instale o driver ebs
kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.4"
saída esperada
serviceaccount/ebs-csi-controller-sa created
serviceaccount/ebs-csi-node-sa created
clusterrole.rbac.authorization.k8s.io/ebs-csi-node-role created
clusterrole.rbac.authorization.k8s.io/ebs-external-attacher-role created
clusterrole.rbac.authorization.k8s.io/ebs-external-provisioner-role created
clusterrole.rbac.authorization.k8s.io/ebs-external-resizer-role created
clusterrole.rbac.authorization.k8s.io/ebs-external-snapshotter-role created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-attacher-binding created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-node-getter-binding created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-provisioner-binding created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-resizer-binding created
clusterrolebinding.rbac.authorization.k8s.io/ebs-csi-snapshotter-binding created
deployment.apps/ebs-csi-controller created
poddisruptionbudget.policy/ebs-csi-controller created
daemonset.apps/ebs-csi-node created
csidriver.storage.k8s.io/ebs.csi.aws.com created
verifique se tá tudo bem
kubectl get pods -n kube-system|grep ebs
saída esperada
ebs-csi-controller-7c486f7676-826ph 6/6 Running 0 110s
ebs-csi-controller-7c486f7676-l5wsg 6/6 Running 0 110s
ebs-csi-node-5q7lk 3/3 Running 0 108s
ebs-csi-node-cxv4p 3/3 Running 0 109s
ebs-csi-node-fskfw 3/3 Running 0 108s
tá tudo bem, agora crie o manifesto do storageclass
vim ebs-storageclass.yaml
insira o conteúdo abaixo
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: ebs-storageclass
parameters:
type: gp2
provisioner: ebs.csi.aws.com
volumeBindingMode: Immediate
aplique o manifesto
kubectl apply -f ebs-storageclass.yaml
verifique se criou o sc
kubectl get sc
saída esperada
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
ebs-storageclass ebs.csi.aws.com Delete Immediate false 3m24s
caso queira, defina este sc como default
kubectl patch storageclass ebs-storageclass -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}
prontinho! :)