EKS集群中使用EBS做卷


在EKS集群中,有些时候对一些deployment服务有IO要求,这时候可以使用EBS块设备进行挂载到服务中使用。再加上EBS有各种容量尺寸、存储介质、卷快照可供选择,以此保证系统IO的需要和数据的可靠性。

awsElasticBlockStore卷,简称EBS,将Amazon Web Services(AWS)EBS Volume 挂载到您的容器中。

EBS的数据是会保留的,就算你删除了Deployment。卷里面的数据还是会保留下来,删除仅仅是被卸载而已。

首先的通过EC2的控制台或者AWS的CLI创建一个块设备。

重要提示:您必须使用 aws ec2 create-volume 或 AWS API 创建 EBS 卷,才能使用它。

使用 EBS有一些限制:

运行 Pod 的节点必须是 AWS EC2 实例
这些实例需要与 EBS 卷位于相同的区域和可用区域
EBS 仅支持卷和 EC2 实例的一对一的挂载

通过aws控制台创建:

vpc

AWS CLI
aws ec2 create-volume --availability-zone=eu-west-1a --size=10 --volume-type=gp2

确保区域与您启动集群的区域相匹配(并且检查大小和 EBS 卷类型是否适合您的使用!)

AWS EBS 示例配置

apiVersion: v1
kind: Pod
metadata:
  name: test-ebs
spec:
  containers:
  - image: nginx:latest
    name: test-container
    volumeMounts:
    - mountPath: /wwwroot
      name: www-volume
  volumes:
  - name: www-volume
    # This AWS EBS volume must already exist.
    awsElasticBlockStore:
      volumeID: <volume-id>
      fsType: ext4

volumeID获取方法:
vpc

实验记录过程
创建pod
➜  ~ kubectl create -f aws-ebs.yaml
➜  ~ kubectl exec -it test-ebs -- bash
oot@test-ebs:/wwwroot# df -hTh
Filesystem     Type     Size  Used Avail Use% Mounted on
overlay        overlay  300G  7.7G  293G   3% /
tmpfs          tmpfs     64M     0   64M   0% /dev
tmpfs          tmpfs    3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/nvme1n1   ext4     9.8G   37M  9.7G   1% /wwwroot #ebs挂载点
/dev/nvme0n1p1 xfs      300G  7.7G  293G   3% /etc/hosts
...省略
root@test-ebs:/wwwroot# ls
lost+found
root@test-ebs:/wwwroot# date  > 1.txt  #第一次pod创建后生成的文件
root@test-ebs:/wwwroot# date
Fri Jul 19 01:51:17 UTC 2019
root@test-ebs:/wwwroot# cat 1.txt
Fri Jul 19 01:51:15 UTC 2019
root@test-ebs:/wwwroot# ^C
root@test-ebs:/wwwroot# exit

➜  ~ kubectl delete -f aws-ebs.yaml  #删除第一次pod服务
pod "test-ebs" deleted
➜  ~ kubectl create -f aws-ebs.yaml #第二次创建pod
pod/test-ebs created

root@test-ebs:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         300G  7.7G  293G   3% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/nvme1n1    9.8G   37M  9.7G   1% /wwwroot  #挂载点
/dev/nvme0n1p1  300G  7.7G  293G   3% /etc/hosts
...省略
root@test-ebs:/# cd /wwwroot/
root@test-ebs:/wwwroot# ls
1.txt  lost+found   #第一次创建的文件还存储保留
root@test-ebs:/wwwroot# ls
1.txt  lost+found
root@test-ebs:/wwwroot# cat 1.txt #内容也在
Fri Jul 19 01:51:15 UTC 2019
k8s  devops