使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)
使用 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
[root@k8smaster ~]# yum install -y nfs-utils
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 nfs-utils.x86_64.1.1.3.0-0.66.el7 将被 升级
---> 软件包 nfs-utils.x86_64.1.1.3.0-0.68.el7.2 将被 更新
--> 解决依赖关系完成
依赖关系解决
============================================================================================================
Package 架构 版本 源 大小
============================================================================================================
正在更新:
nfs-utils x86_64 1:1.3.0-0.68.el7.2 updates 413 k
事务概要
============================================================================================================
升级 1 软件包
总计:413 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在更新 : 1:nfs-utils-1.3.0-0.68.el7.2.x86_64 1/2
清理 : 1:nfs-utils-1.3.0-0.66.el7.x86_64 2/2
验证中 : 1:nfs-utils-1.3.0-0.68.el7.2.x86_64 1/2
验证中 : 1:nfs-utils-1.3.0-0.66.el7.x86_64 2/2
更新完毕:
nfs-utils.x86_64 1:1.3.0-0.68.el7.2
完毕!
[root@k8smaster ~]#
设置挂载路径
# 创建nfs挂载目录,
[root@k8smaster ~]# mkdir /nfs
# 配置挂载路径
[root@k8smaster ~]# vi /etc/exports
#/nfs 挂载路径 * 所有内容 (rw 读写权限)
/nfs *(rw,sync,no_root_squash,no_subtree_check)
[root@k8smaster ~]#
K8S node 节点安装 nfs
k8snode1、k8snode2 都进行安装
#节点安装 nfs, 会自动进行挂载--好像没生效
[root@k8snode1 ~]# yum install -y nfs-utils
[root@k8snode1 ~]#
# 将master 的 nfs 挂载到 节点上。
[root@k8snode3 ~]# mount -t nfs 172.16.3.181:/nfs /nfs
[root@k8snode3 ~]# chmod +x /etc/rc.d/rc.local
[root@k8snode3 ~]# echo '#nfs' >> /etc/rc.d/rc.local
[root@k8snode3 ~]# echo 'mount -t nfs 172.16.3.181:/nfs /nfs' >> /etc/rc.local
启动 nfs 服务
# 启动 nfs 服务
[root@k8smaster ~]# systemctl start nfs && systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@k8smaster ~]# ps -ef|grep nfs
root 31990 2 0 11:23 ? 00:00:00 [nfsd4_callbacks]
root 31996 2 0 11:23 ? 00:00:00 [nfsd]
root 31997 2 0 11:23 ? 00:00:00 [nfsd]
root 31998 2 0 11:23 ? 00:00:00 [nfsd]
root 31999 2 0 11:23 ? 00:00:00 [nfsd]
root 32000 2 0 11:23 ? 00:00:00 [nfsd]
root 32001 2 0 11:23 ? 00:00:00 [nfsd]
root 32002 2 0 11:23 ? 00:00:00 [nfsd]
root 32003 2 0 11:23 ? 00:00:00 [nfsd]
root 34377 29719 0 11:29 pts/0 00:00:00 grep --color=auto nfs
[root@k8smaster ~]#
部署应用验证
nfs-ngins.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-nfs
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: wwwroot
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
volumes:
- name: wwwroot
nfs:
server: 172.16.3.181
path: /nfs
# 具休内容见上
[root@k8smaster ~]# vi nfs-nginx.yaml
[root@k8smaster ~]# kubectl apply -f nfs-nginx.yaml
deployment.apps/nginx-nfs created
[root@k8smaster ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
javademo1-d7856c75c-czv2g 1/1 Running 0 20h
javademo1-d7856c75c-n28rs 1/1 Running 0 20h
javademo1-d7856c75c-xzqjc 1/1 Running 0 20h
nginx-f89759699-5hkdw 1/1 Running 0 26d
nginx-nfs-788564fbc8-z9srr 1/1 Running 0 3m7s
# 查看内部信息
[root@k8smaster ~]# kubectl describe pod nginx-nfs-788564fbc8-z9srr
# 进入pod 容器
[root@k8smaster ~]# kubectl exec -it nginx-nfs-788564fbc8-z9srr bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
# 查看html目录下的内容【这时候没内容】
root@nginx-nfs-788564fbc8-z9srr:/# ls /usr/share/nginx/html/
root@nginx-nfs-788564fbc8-z9srr:/#
# 到 nfs 服务器 创建文件【再开一个连接命令窗口】
[root@k8smaster ~]# cd /nfs/
[root@k8smaster nfs]# vi index.html
hello nfs
# 回到容器内,再看下有没有文件
root@nginx-nfs-788564fbc8-z9srr:/# ls /usr/share/nginx/html/
index.html #这时候文件就有了
root@nginx-nfs-788564fbc8-z9srr:/#
# 对外暴露 nginx-nfs 服务
[root@k8smaster nfs]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
javademo1 NodePort 10.106.43.46 <none> 8111:31452/TCP 21d
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 26d
nginx NodePort 10.103.87.81 <none> 80:30339/TCP 26d
[root@k8smaster nfs]# kubectl expose deployment nginx-nfs --port=80 --type=NodePort
service/nginx-nfs exposed
[root@k8smaster nfs]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
javademo1 NodePort 10.106.43.46 <none> 8111:31452/TCP 21d
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 26d
nginx NodePort 10.103.87.81 <none> 80:30339/TCP 26d
nginx-nfs NodePort 10.99.84.9 <none> 80:30205/TCP 5s
[root@k8smaster nfs]#

使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)的更多相关文章
- 02 . Kubeadm部署Kubernetes及简单应用
kubeadm部署Kubernetes kubeadm简介 # kubeadm是一位高中生的作品,他叫Lucas Kaldstrom,芬兰人,17岁用业余时间完成的一个社区项目: # kubeadm的 ...
- 使用kubeadm部署Kubernetes v1.13.3
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: 1. 安装要求 在开始之前,部署Kubernetes集群 ...
- [原]使用kubeadm部署kubernetes(一)
####################### 以下为声明 ##################### 在公众号 木子李的菜田 输入关键词: k8s 有系列安装文档 此文档是之前做笔记在 ...
- [转帖]CentOS 7 使用kubeadm 部署 Kubernetes
CentOS 7 使用kubeadm 部署 Kubernetes 关闭swap 执行swapoff临时关闭swap. 重启后会失效,若要永久关闭,可以编辑/etc/fstab文件,将其中swap分 ...
- Kubeadm部署Kubernetes
Kubeadm部署Kubernetes 1.环境准备 主机名 IP 说明 宿主机系统 k8s-master 10.0.0.101 Kubernetes集群的master节点 Ubuntu2004 k8 ...
- 附025.kubeadm部署Kubernetes更新证书
一 查看证书 1.1 查看过期时间-方式一 1 [root@master01 ~]# tree /etc/kubernetes/pki/ 2 [root@master01 ~]# for tls in ...
- K8s 二、(1、kubeadm部署Kubernetes集群)
准备工作 满足安装 Docker 项目所需的要求,比如 64 位的 Linux 操作系统.3.10 及以上的内核版本: x86 或者 ARM 架构均可: 机器之间网络互通,这是将来容器之间网络互通的前 ...
- Centos7 安装部署Kubernetes(k8s)集群
目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...
- Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)
背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...
- ubuntu 20.04 基于kubeadm部署kubernetes 1.22.4集群及部署集群管理工具
一.环境准备: 集群版本:kubernetes 1.22.4 服务器系统 节点IP 节点类型 服务器-内存/CUP hostname Ubuntu 20.04 192.168.1.101 主节点 2G ...
随机推荐
- 聊一聊 tcp/ip 在.NET故障分析的重要性
一:背景 1. 讲故事 这段时间分析了几个和网络故障有关的.NET程序之后,真的越来越体会到计算机基础课的重要,比如 计算机网络 课,如果没有对 tcpip协议 的深刻理解,解决这些问题真的很难,因为 ...
- 使用TS进行Vue-Router的Meta类型扩展
目录 1.前言 2.解决 1.前言 使用Vue-Router时,会将一些字段信息附加到路由的Meta对象里面,比如图标icon,标题,权限等,如下: { path: '/billboard/board ...
- 开源模型 Zephyr-7B 发布——跨越三大洲的合作
最近我们刚刚发布了新的开源模型 Zephry-7B,这个模型的诞生离不开全球三大洲开源社区的协作 ️. 我们的 CSO Thomas 录了一个视频介绍了它的起源故事: 就在几个月前,巴黎的一个新团队发 ...
- C#Winform使用NPOI获取word中的数据
公众号「DotNet学习交流」,分享学习DotNet的点滴. 需求 想要获取word里面的内容,如下图所示: 有一张表和一段文本,并将它们存入数据库或者Excel. 步骤 添加NPOI的库,如下图所示 ...
- 快速上手Prompt,让你的LLMs更智能
前言 在当前社会中,随着AIGC的盛行,使用好prompt可以让自己更上一层楼.今天,我将通过星火大模型重新认识prompt设计,并与大家分享一些使用技巧. 如果你想体验星火大模型的强大魅力,请登录h ...
- 一个基于ASP.NET Core完全开源的CMS 解决方案
本文简介 MixCoreCMS是一个基于.NET Core框架的开源内容管理系统(CMS),提供了丰富的的基础功能和插件,是一款面向未来的企业 Web CMS,可轻松构建任何类型的应用程序.集成了Go ...
- EXCEL中逆向查找的十种方法
逆向查找在Excel中指的是根据某个数值或条件,查找该数值或条件所在的单元格位置.逆向查找可以帮助用户快速定位数据,对于数据分析和处理非常有用.下面将详细介绍在Excel中进行逆向查找的十种方法. 一 ...
- 深度解读DBSCAN聚类算法:技术与实战全解析
探索DBSCAN算法的内涵与应用,本文详述其理论基础.关键参数.实战案例及最佳实践,揭示如何有效利用DBSCAN处理复杂数据集,突破传统聚类限制. 关注TechLead,分享AI全维度知识.作者拥有1 ...
- C++ Qt开发:使用顺序容器类
当我们谈论编程中的数据结构时,顺序容器是不可忽视的一个重要概念.顺序容器是一种能够按照元素添加的顺序来存储和检索数据的数据结构.它们提供了简单而直观的方式来组织和管理数据,为程序员提供了灵活性和性能的 ...
- [ABC261E] Many Operations
Problem Statement We have a variable \(X\) and \(N\) kinds of operations that change the value of \( ...