当前位置:网站首页>【云原生】2.5 Kubernetes 核心实战(下)
【云原生】2.5 Kubernetes 核心实战(下)
2022-07-02 09:32:00 【程序猿追】
哈喽~大家好呀,我们这篇继续开始上篇和上上篇的讲解
(感觉我在水文,这是这系列的最后一篇了,偷偷告诉你们,下一篇有惊喜哟~),好吧,废话少说,我们就来开始上课吧!
个人主页:个人主页
系列专栏:【云原生系列】
与这篇相关的文章:
2.2【云原生】 kubeadm创建集群 【云原生】2.2 kubeadm创建集群_程序猿追的博客-CSDN博客 2.3【云原生】2.3 Kubernetes 核心实战(上) 【云原生】2.3 Kubernetes 核心实战(上)_程序猿追的博客-CSDN博客 2.4【云原生】Kubernetes 核心实战(中) 【云原生】2.4 Kubernetes 核心实战(中)_程序猿追的博客-CSDN博客
目录
一、基本概念与NFS环境搭建
看图,在未来,我们有各种各样的 Pod,有一些数据想挂在外面修改,比如:我们将 Pod 的 / data,挂在到 / a里面,其他也一样。

当我们三号机某一应用出现故障时,这是他会故障转移,等 5 分钟后还没自愈成功,这是会转移到 2 号机上面,但三号机的数据会在 2 号机吗?答案是不会。我们将外面的叫——存储层。
1、搭建网络文件系统
要搭建,必须所有的人都安装 nfs
所有机器安装
yum install -y nfs-utils然后在主节点设置 nfs 主节点
echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exportsmkdir -p /nfs/data
systemctl enable rpcbind --now
systemctl enable nfs-server --now检查配置是否生效
exportfs -r 
执行命令挂载 nfs 服务器上的共享目录到本机路径 /root/nfsmount
mkdir -p /nfs/data
mount -t nfs 172.31.0.4:/nfs/data /nfs/data写入测试文件
echo "hello nfs server" > /nfs/data/test.txt
2、Deplryment使用NFS进行挂载
输入一下代码来测试一下
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-pv-demo
name: nginx-pv-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx-pv-demo
template:
metadata:
labels:
app: nginx-pv-demo
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
nfs:
server: 172.31.0.4
path: /nfs/data/nginx-pv
二、PV 与 PVC使用
啥是 PV?啥又是 PVC ?
PV:持久卷(Persistent Volume),将应用需要持久化的数据保存到指定位置
PVC:持久卷申明(Persistent Volume Claim),申明需要使用的持久卷规格
举个例子,假设我们需要 1GB 的持久卷(PV),那么 PVC 就是我们 Pod 要去申请的申请书,申请书与 PV 的卷符合之后,再来确定位置。

1、创建pv池
nfs主节点
mkdir -p /nfs/data/01
mkdir -p /nfs/data/02
mkdir -p /nfs/data/03创建PV
(注:记得改 server 的地址)
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01-10m
spec:
capacity:
storage: 10M
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /nfs/data/01
server: 172.31.0.4
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv02-1gi
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /nfs/data/02
server: 172.31.0.4
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv03-3gi
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /nfs/data/03
server: 172.31.0.4
PV 创建好了之后再来创建 PVC
创建Pod绑定PVC
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-deploy-pvc
name: nginx-deploy-pvc
spec:
replicas: 2
selector:
matchLabels:
app: nginx-deploy-pvc
template:
metadata:
labels:
app: nginx-deploy-pvc
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
persistentVolumeClaim:
claimName: nginx-pvc
三、使用SConfigMap抽取配置
在这里挂在文件用 ConfigMap
作用:抽取应用配置,并且可以自动更新
创建配置,redis保存到k8s的etcd;
kubectl create cm redis-conf --from-file=redis.confdata是所有真正的数据,key:默认是文件名 value:配置文件的内容
apiVersion: v1
data:
redis.conf: |
appendonly yes
kind: ConfigMap
metadata:
name: redis-conf
namespace: default创建Pod
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
containers:
- name: redis
image: redis
command:
- redis-server
- "/redis-master/redis.conf" #指的是redis容器内部的位置
ports:
- containerPort: 6379
volumeMounts:
- mountPath: /data
name: data
- mountPath: /redis-master
name: config
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: redis-conf
items:
- key: redis.conf
path: redis.conf检查默认配置
kubectl exec -it redis -- redis-cli
127.0.0.1:6379> CONFIG GET appendonly
127.0.0.1:6379> CONFIG GET requirepass修改ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: example-redis-config
data:
redis-config: |
maxmemory 2mb
maxmemory-policy allkeys-lru 检查配置是否更新
kubectl exec -it redis -- redis-cli
127.0.0.1:6379> CONFIG GET maxmemory
127.0.0.1:6379> CONFIG GET maxmemory-policy检查指定文件内容是否已经更新
修改了CM。Pod里面的配置文件会跟着变
配置值未更改,因为需要重新启动 Pod 才能从关联的 ConfigMap 中获取更新的值。
原因:我们的Pod部署的中间件自己本身没有热更新能力
四、Secret场景示例
Secret 对象类型用来保存敏感信息,例如密码、令牌和密钥等信息。 将这些信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活。
kubectl create secret docker-registry leifengyang-docker \
--docker-username=leifengyang \
--docker-password=Lfy123456 \
[email protected]
##命令格式
kubectl create secret docker-registry regcred \
--docker-server=<你的镜像仓库服务器> \
--docker-username=<你的用户名> \
--docker-password=<你的密码> \
--docker-email=<你的邮箱地址>apiVersion: v1
kind: Pod
metadata:
name: private-nginx
spec:
containers:
- name: private-nginx
image: leifengyang/guignginx:v1.0
imagePullSecrets:
- name: leifengyang-docker好了致辞我们 k8s 篇就讲完了,下一篇就来到了 KubeSphere 篇。
(求关注)持续更新中……

边栏推荐
- 【AppLinking实战案例】通过AppLinking分享应用内图片
- 洛谷 P3398 仓鼠找 sugar(树上倍增 lca 判断树中两条路径是否相交 结论)
- 快应用中实现自定义抽屉组件
- Special topic of binary tree -- acwing 3384 Binary tree traversal (known preorder traversal, while building a tree, while outputting middle order traversal)
- sql left join 主表限制条件写在on后面和写在where后面的区别
- TIPC介绍1
- One trick to quickly realize custom application titlebar
- PCL eigen introduction and simple use
- ImportError: cannot import name ‘Digraph‘ from ‘graphviz‘
- [quick application] win7 system cannot run and debug projects using Huawei ide
猜你喜欢

【AGC】构建服务3-认证服务示例

Uncover the secrets of Huawei application market application statistics

金山云——2023届暑期实习

How to transfer event objects and user-defined parameters simultaneously in Huawei express applications

Hdu1236 ranking (structure Sorting)

最详细MySql安装教程

Thanos Receiver
![[play with FPGA learning 2 in simple terms ----- design skills (basic grammar)]](/img/50/22f2fa8fd606572b13a18cc889ca2e.png)
[play with FPGA learning 2 in simple terms ----- design skills (basic grammar)]

Importerror: impossible d'importer le nom « graph» de « graphviz»

【深入浅出玩转FPGA学习3-----基本语法】
随机推荐
Regular and common formulas
【AGC】构建服务3-认证服务示例
LVM操作
Verilog 和VHDL有符号数和无符号数相关运算
TIPC Cluster5
二叉树专题--AcWing 1589. 构建二叉搜索树
Is bond fund safe? Does the bond buying foundation lose principal?
二.Stm32f407芯片GPIO编程,寄存器操作,库函数操作和位段操作
如何用list组件实现tabbar标题栏
【AGC】如何解决事件分析数据本地和AGC面板中显示不一致的问题?
金山云——2023届暑期实习
Special topic of binary tree -- [deep base 16. Example 7] ordinary binary tree (simplified version) (multiset seeks the precursor and subsequent sentry Art)
洛谷 P1892 [BOI2003]团伙(并查集变种 反集)
二叉树专题--AcWing 19. 二叉树的下一个节点(找树中节点的后继)
static 函数中的静态变量
2022-06-17
The most detailed MySQL installation tutorial
TIPC Getting Started6
Use of vscode tool
Resources读取2d纹理 转换为png格式