您现在的位置是:首页 > 文章详情

k8s使用openebs实现动态持久化存储

日期:2018-12-16点击:415

简介

本文章介绍如何使用openebs为k8s提供动态申请pv的功能。iscsi提供底层存储功能,openebs管理iscsi。目前只支持pv的ReadWriteOnce访问模式

访问模式只是能力描述,并不是强制执行的,对于没有按pvc 声明的方式使用pv,存储提供者应该负责访问时的运行错误。例如如果设置pvc的访问模式为ReadOnlyMany ,pod挂载后依然可写,如果需要真正的不可写,申请pvc是需要指定 readOnly: true 参数

安装

实验用的Vagrantfile

# -*- mode: ruby -*- # vi: set ft=ruby : ENV["LC_ALL"] = "en_US.UTF-8" Vagrant.configure("2") do |config| (1..3).each do |i| config.vm.define "lab#{i}" do |node| node.vm.box = "centos-7.4-docker-17" node.ssh.insert_key = false node.vm.hostname = "lab#{i}" node.vm.network "private_network", ip: "11.11.11.11#{i}" node.vm.provision "shell", inline: "echo hello from node #{i}" node.vm.provider "virtualbox" do |v| v.cpus = 2 v.customize ["modifyvm", :id, "--name", "lab#{i}", "--memory", "3096"] file_to_disk = "lab#{i}_vdb.vdi" unless File.exist?(file_to_disk) # 50GB v.customize ['createhd', '--filename', file_to_disk, '--size', 50 * 1024] end v.customize ['storageattach', :id, '--storagectl', 'IDE', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk] end end end end 复制代码

安装配置iscsi

# 安装 iscsi yum install iscsi-initiator-utils -y # 查看 InitiatorName 是否正常配置 cat /etc/iscsi/initiatorname.iscsi # 启动查看状态 systemctl start iscsid.service systemctl status iscsid.service systemctl start iscsi.service systemctl status iscsi.service 复制代码

安装openebs

# 部署 mkdir openebs && cd openebs wget https://raw.githubusercontent.com/openebs/openebs/v0.6/k8s/openebs-operator.yaml wget https://raw.githubusercontent.com/openebs/openebs/v0.6/k8s/openebs-storageclasses.yaml kubectl apply -f openebs-operator.yaml kubectl apply -f openebs-storageclasses.yaml # 查看 openebs 状态 kubectl get pods -n openebs -o wide kubectl get svc -n openebs kubectl get crd 复制代码

测试

# 查看 storage class kubectl get sc # 创建pvc测试 cat >openebs-pvc-test.yaml<<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: openebs1 spec: storageClassName: openebs-standard accessModes: - ReadWriteOnce resources: requests: storage: 5Gi EOF kubectl apply -f openebs-pvc-test.yaml # 查看 kubectl get pvc kubectl get pv # 创建 nginx pod 挂载测试 cat >nginx-pod.yaml<<EOF apiVersion: v1 kind: Pod metadata: name: nginx-pod1 labels: name: nginx-pod1 spec: containers: - name: nginx-pod1 image: nginx:alpine ports: - name: web containerPort: 80 volumeMounts: - name: openebs1-vol1 mountPath: /usr/share/nginx/html volumes: - name: openebs1-vol1 persistentVolumeClaim: claimName: openebs1 EOF kubectl apply -f nginx-pod.yaml # 查看 kubectl get pods -o wide # 修改文件内容 kubectl exec -ti nginx-pod1 -- /bin/sh -c 'echo Hello World from Openebs!!! > /usr/share/nginx/html/index.html' # 访问测试 POD_ID=$(kubectl get pods -o wide | grep nginx-pod1 | awk '{print $(NF-1)}') curl http://$POD_ID

本文转自掘金- k8s使用openebs实现动态持久化存储
原文链接:https://yq.aliyun.com/articles/680050
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章