0
点赞
收藏
分享

微信扫一扫

k8s1.20.15 部署试用PV & PVC & configmap & secrets

晚熟的猫 2022-02-23 阅读 45

k8s1.20.15 部署试用PV & PVC & configmap & secrets

标签(空格分隔): kubernetes系列

一:存储抽象

1.1 nfs 环境准备

#所有机器安装
yum install -y nfs-utils

1.2 nfs构建:

#nfs主节点
echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports

mkdir -p /nfs/data
systemctl enable rpcbind --now
systemctl enable nfs-server --now
#配置生效
exportfs -r

image.png

1.3 从节点:

showmount -e 172.16.10.13

#执行以下命令挂载 nfs 服务器上的共享目录到本机路径 /root/nfsmount
mkdir -p /nfs/data

mount -t nfs 172.16.10.13:/nfs/data /nfs/data
# 写入一个测试文件
echo "hello nfs server" > /nfs/data/test.txt

image.png
image.png
image.png

1.4 原生方式数据挂载

vim nfs.yaml

--------
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.16.10.13
            path: /nfs/data/nginx-pv
 -----           

kubectl apply -f nfs.yaml

kubectl get pod 

192.168.10.13:

cd /nfs/data/nginx-pv

echo 1111 > index.html 

image.png
image.png

image.png

image.png

二:PV&PVC

PV:持久卷(Persistent Volume),将应用需要持久化的数据保存到指定位置
PVC:持久卷申明(Persistent Volume Claim),申明需要使用的持久卷规格

2.1 创建pv池

静态供应

#nfs主节点172.16.10.13

mkdir -p /nfs/data/01
mkdir -p /nfs/data/02
mkdir -p /nfs/data/03

image.png

2.2 创建PV

vim pv.yaml

------

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv01-10m
spec:
  capacity:
    storage: 10M
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/01
    server: 172.16.10.13
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv02-1gi
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/02
    server: 172.16.10.13
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv03-3gi
spec:
  capacity:
    storage: 3Gi
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/03
    server: 172.16.10.13

  kubectl apply -f pv.yaml

image.png

2.3 PVC创建与绑定

vim pvc.yaml

------
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nginx-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 200Mi
  storageClassName: nfs

  -----

image.png

2.4 创建Pod绑定PVC

vim pod-pvc.yaml

------

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

   kubectl apply -f pod-pvc.yaml 

image.png

image.png

image.png

image.png

三: configmap

抽取应用配置,并且可以自动更新

3.1 redis 配置示例:

vim redis.conf 
---
appendonly yes
---

# 创建配置,redis保存到k8s的etcd;
kubectl create cm redis-conf --from-file=redis.conf

kubectl get cm 

image.png

apiVersion: v1
data:    #data是所有真正的数据,key:默认是文件名   value:配置文件的内容
  redis.conf: |
    appendonly yes
kind: ConfigMap
metadata:
  name: redis-conf
  namespace: default

image.png

3.2 创建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

image.png
image.png

image.png

四: Secret 配置

4.1 secret 概念

Secret 对象类型用来保存敏感信息,例如密钥、OAuth 令牌和 SSH 密钥。 将这些信息放在 secret 中比放在 Pod 的定义或者 容器镜像 中来说更加安全和灵活。
kubectl create secret docker-registry flyfish-docker \
--docker-username=flyfish \
--docker-password=flyfish225.com \
--docker-email=644767953@qq.com

##命令格式
kubectl create secret docker-registry regcred \
  --docker-server=<你的镜像仓库服务器> \
  --docker-username=<你的用户名> \
  --docker-password=<你的密码> \
  --docker-email=<你的邮箱地址>

image.png

image.png

apiVersion: v1
kind: Pod
metadata:
  name: private-nginx
spec:
  containers:
  - name: private-nginx
    image: flyfish/guignginx:v1.0
  imagePullSecrets:
  - name: flyfish-docker
举报

相关推荐

0 条评论