在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控制台创建:
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获取方法:
实验记录过程
创建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