使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储) ...

打印 上一主题 下一主题

主题 830|帖子 830|积分 2490

使用 Kubeadm 部署 Kubernetes(K8S) 安装
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix
Volume 是 Pod 中能够被多个容器访问的共享目录。 Kubernetes 的 Volume 定义在 Pod 上,它被一个 Pod 中的多个容 器挂载到具体的文件目录下。
Volume 与 Pod 的生命周期相同,但与容器的生命周期不相关, 当容器终止或重启时, Volume 中的数据也不会丢失。 要使用volume, pod 需要指定 volume 的类型和内容( 字段) , 和映射到容器的位置( 字段) 。
Kubernetes 支持多种类型的 Volume,包括: emptyDir、 hostPath、 gcePersistentDisk、awsElasticBlockStore、 nfs、 iscsi、 flocker、 glusterfs、 rbd、 cephfs、 gitRepo、secret、 persistentVolumeClaim、 downwardAPI、 azureFileVolume、 azureDisk、vsphereVolume、 Quobyte、 PortworxVolume、 ScaleIO。 emptyDirEmptyDir 类型的 volume
创建于 pod 被调度到某个宿主机上的时候, 而同一个 pod 内的容器都能读写 EmptyDir 中的同一个文件。 一旦这个 pod 离开了这个宿主机, EmptyDir 中的数据就会被永久删除。 所以目前 EmptyDir 类型的 volume 主要用作临时空间, 比如 Web 服务器写日志或者 tmp 文件需要的临时目录
NFS 网络存府:POD 重启,数据还存在,缺陷,需要知道NFS服务器的地址,配在 yaml中
找一台服务器,做NFS服务端

选择合适的节点部署,这边使用 K8SMaster 主节点做为nfs服务器
安装nfs
  1. [root@k8smaster ~]# yum install -y nfs-utils
  2. 已加载插件:fastestmirror, langpacks
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.ustc.edu.cn
  5. * extras: mirrors.aliyun.com
  6. * updates: mirrors.aliyun.com
  7. 正在解决依赖关系
  8. --> 正在检查事务
  9. ---> 软件包 nfs-utils.x86_64.1.1.3.0-0.66.el7 将被 升级
  10. ---> 软件包 nfs-utils.x86_64.1.1.3.0-0.68.el7.2 将被 更新
  11. --> 解决依赖关系完成
  12. 依赖关系解决
  13. ============================================================================================================
  14. Package                    架构                     版本                    源                    大小
  15. ============================================================================================================
  16. 正在更新:
  17. nfs-utils                 x86_64               1:1.3.0-0.68.el7.2          updates               413 k
  18. 事务概要
  19. ============================================================================================================
  20. 升级  1 软件包
  21. 总计:413 k
  22. Downloading packages:
  23. Running transaction check
  24. Running transaction test
  25. Transaction test succeeded
  26. Running transaction
  27.   正在更新    : 1:nfs-utils-1.3.0-0.68.el7.2.x86_64                                                 1/2
  28.   清理        : 1:nfs-utils-1.3.0-0.66.el7.x86_64                                                   2/2
  29.   验证中      : 1:nfs-utils-1.3.0-0.68.el7.2.x86_64                                                 1/2
  30.   验证中      : 1:nfs-utils-1.3.0-0.66.el7.x86_64                                                   2/2
  31. 更新完毕:
  32.   nfs-utils.x86_64 1:1.3.0-0.68.el7.2   
  33. 完毕!
  34. [root@k8smaster ~]#
复制代码
设置挂载路径
  1. # 创建nfs挂载目录,
  2. [root@k8smaster ~]# mkdir /nfs
  3. # 配置挂载路径
  4. [root@k8smaster ~]# vi /etc/exports
  5. #/nfs 挂载路径   * 所有内容 (rw 读写权限)
  6. /nfs *(rw,sync,no_root_squash,no_subtree_check)
  7. [root@k8smaster ~]#
复制代码
K8S node 节点安装 nfs

k8snode1、k8snode2 都进行安装
  1. #节点安装 nfs, 会自动进行挂载
  2. [root@k8snode1 ~]# yum install -y nfs-utils
  3. [root@k8snode1 ~]#
复制代码
启动 nfs 服务
  1. # 启动 nfs 服务
  2. [root@k8smaster ~]# systemctl start nfs && systemctl enable nfs
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
  4. [root@k8smaster ~]# ps -ef|grep nfs
  5. root     31990     2  0 11:23 ?        00:00:00 [nfsd4_callbacks]
  6. root     31996     2  0 11:23 ?        00:00:00 [nfsd]
  7. root     31997     2  0 11:23 ?        00:00:00 [nfsd]
  8. root     31998     2  0 11:23 ?        00:00:00 [nfsd]
  9. root     31999     2  0 11:23 ?        00:00:00 [nfsd]
  10. root     32000     2  0 11:23 ?        00:00:00 [nfsd]
  11. root     32001     2  0 11:23 ?        00:00:00 [nfsd]
  12. root     32002     2  0 11:23 ?        00:00:00 [nfsd]
  13. root     32003     2  0 11:23 ?        00:00:00 [nfsd]
  14. root     34377 29719  0 11:29 pts/0    00:00:00 grep --color=auto nfs
  15. [root@k8smaster ~]#
复制代码
部署应用验证

nfs-ngins.yaml
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: nginx-nfs
  5. spec:
  6.   replicas: 1
  7.   selector:
  8.     matchLabels:
  9.       app: nginx
  10.   template:
  11.     metadata:
  12.       labels:
  13.         app: nginx
  14.     spec:
  15.       containers:
  16.       - name: nginx
  17.         image: nginx
  18.         volumeMounts:
  19.         - name: wwwroot
  20.           mountPath: /usr/share/nginx/html
  21.         ports:
  22.         - containerPort: 80
  23.       volumes:
  24.         - name: wwwroot
  25.           nfs:
  26.             server: 172.16.3.181
  27.             path: /nfs
复制代码
  1. # 具休内容见上
  2. [root@k8smaster ~]# vi nfs-nginx.yaml
  3. [root@k8smaster ~]# kubectl apply -f nfs-nginx.yaml
  4. deployment.apps/nginx-nfs created
  5. [root@k8smaster ~]# kubectl get pods
  6. NAME                         READY   STATUS    RESTARTS   AGE
  7. javademo1-d7856c75c-czv2g    1/1     Running   0          20h
  8. javademo1-d7856c75c-n28rs    1/1     Running   0          20h
  9. javademo1-d7856c75c-xzqjc    1/1     Running   0          20h
  10. nginx-f89759699-5hkdw        1/1     Running   0          26d
  11. nginx-nfs-788564fbc8-z9srr   1/1     Running   0          3m7s
  12. # 查看内部信息
  13. [root@k8smaster ~]# kubectl describe pod nginx-nfs-788564fbc8-z9srr
  14. # 进入pod 容器
  15. [root@k8smaster ~]# kubectl exec -it nginx-nfs-788564fbc8-z9srr bash
  16. kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
  17. # 查看html目录下的内容【这时候没内容】
  18. root@nginx-nfs-788564fbc8-z9srr:/# ls /usr/share/nginx/html/
  19. root@nginx-nfs-788564fbc8-z9srr:/#
  20. # 到 nfs 服务器 创建文件【再开一个连接命令窗口】
  21. [root@k8smaster ~]# cd /nfs/
  22. [root@k8smaster nfs]# vi index.html
  23. hello nfs
  24. # 回到容器内,再看下有没有文件
  25. root@nginx-nfs-788564fbc8-z9srr:/# ls /usr/share/nginx/html/
  26. index.html #这时候文件就有了
  27. root@nginx-nfs-788564fbc8-z9srr:/#
  28. # 对外暴露 nginx-nfs 服务
  29. [root@k8smaster nfs]# kubectl get svc
  30. NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
  31. javademo1    NodePort    10.106.43.46   <none>        8111:31452/TCP   21d
  32. kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          26d
  33. nginx        NodePort    10.103.87.81   <none>        80:30339/TCP     26d
  34. [root@k8smaster nfs]# kubectl expose deployment nginx-nfs --port=80 --type=NodePort
  35. service/nginx-nfs exposed
  36. [root@k8smaster nfs]# kubectl get svc
  37. NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
  38. javademo1    NodePort    10.106.43.46   <none>        8111:31452/TCP   21d
  39. kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          26d
  40. nginx        NodePort    10.103.87.81   <none>        80:30339/TCP     26d
  41. nginx-nfs    NodePort    10.99.84.9     <none>        80:30205/TCP     5s
  42. [root@k8smaster nfs]#
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表