做网站卖房写标题,网站建设维护价格,四川监理协会建设网站,网站建设需求范文目录 一、实验
1.环境
2.K8S storage节点部署NFS
3.K8S 动态创建PV
4.K8S master节点部署HELM3
4.K8S master节点部署Minio存储服务#xff08;第一种方式安装#xff09;
5.Minio客户端安装MC命令
6.K8S master节点使用Docker 部署Minio存储服务#xff08;第二种方…目录 一、实验
1.环境
2.K8S storage节点部署NFS
3.K8S 动态创建PV
4.K8S master节点部署HELM3
4.K8S master节点部署Minio存储服务第一种方式安装
5.Minio客户端安装MC命令
6.K8S master节点使用Docker 部署Minio存储服务第二种方式安装
二、问题
1.K8S无法删除pvpvc问题
2.minio 部署模式有哪些
3.pod Readiness探针与Liveness探针失败
4. 添加 MinIO服务失败
5.docker创建容器失败
6.K8S如何快速创建Minio存储 一、实验
1.环境
1主机
表1 主机
主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 node1K8S node节点1.20.6192.168.204.181node2K8S node节点1.20.6192.168.204.182stor01 nfs存储节点 192.168.204.177
2查看集群状态 2.K8S storage节点部署NFS
1安装配置nfs服务
#在stor01(192.168.204.183)节点上安装nfs并配置nfs服务
mkdir /opt/k8s
chmod 777 /opt/k8s/yum -y install nfs-utils rpcbind#给204网段用户赋予读写权限、同步内容、不压缩共享对象root用户权限
vim /etc/exports
/opt/k8s 192.168.204.0/24(rw,sync,no_root_squash)#首次安装
systemctl start rpcbind nfs#非首次安装
systemctl restart rpcbind
systemctl restart nfs#监听服务
ss -antp | grep rpcbind#查看共享
exportfs -arv showmount -e#所有节点配置hosts映射或者配置DNS解析
echo 192.168.204.177 stor01 /etc/hosts
在stor01(192.168.204.177)节点上安装nfs并配置nfs服务 安装 配置文件 重启服务 监听服务 查看共享目录 2查看域名
vim /etc/hosts 3.K8S 动态创建PV
(1) 创建 Service Account用来管理 NFS-Subdir-External-Provisioner 在 k8s 集群中运行的权限设置 nfs-client 对 PVPVCStorageClass 等的规则
编写资源清单文件
vim nfs-rbac.yamlapiVersion: v1
kind: ServiceAccount
metadata:name: nfs-client-provisionernamespace: default # 替换成你要部署的 Namespace
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: nfs-client-provisioner-runner
rules:- apiGroups: []resources: [persistentvolumes]verbs: [get, list, watch, create, delete]- apiGroups: []resources: [persistentvolumeclaims]verbs: [get, list, watch, update]- apiGroups: [storage.k8s.io]resources: [storageclasses]verbs: [get, list, watch]- apiGroups: []resources: [events]verbs: [create, update, patch]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: run-nfs-client-provisioner
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: default
rules:- apiGroups: []resources: [endpoints]verbs: [get, list, watch, create, update, patch]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: default
subjects:- kind: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io 生成资源
kubectl apply -f nfs-rbac.yaml再次查看sa
kubectl get sa 3使用 Deployment 来部署 NFS-Subdir-External-Provisioner
NFS Provisione(即 nfs-client)有两个功能一个是在 NFS 共享目录下创建挂载点(volume)另一个则是将 PV 与 NFS 的挂载点建立关联。 vim nfs-provisioner-deploy.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisionerlabels:app: nfs-client-provisioner
spec:replicas: 1strategy:type: Recreate ## 设置升级策略为删除再创建(默认为滚动更新)selector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisioner#image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0image: registry.cn-beijing.aliyuncs.com/xngczl/nfs-subdir-external-provisione:v4.0.0volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAME ## Provisioner的名称,以后设置的storageclass要和这个保持一致value: nfs-client- name: NFS_SERVER ## NFS服务器地址,需和valumes参数中配置的保持一致value: stor01- name: NFS_PATH ## NFS服务器数据存储目录,需和valumes参数中配置的保持一致value: /opt/k8svolumes:- name: nfs-client-rootnfs:server: stor01 ## NFS服务器地址path: /opt/k8s ## NFS服务器数据存储目录 kubectl apply -f nfs-provisioner-deploy.yaml 5创建 StorageClass负责建立 PVC 并调用 NFS-Subdir-External-Provisioner进行预定的工作并让 PV 与 PVC 建立关联声明 NFS 动态卷提供者名称为 “nfs-storage”。
vim nfs-storage.yamlapiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-storageannotations:storageclass.kubernetes.io/is-default-class: false ## 是否设置为默认的storageclass
provisioner: nfs-client ## 动态卷分配者名称必须和上面创建的provisioner变量中设置的Name一致
parameters:archiveOnDelete: true ## 设置为false时删除PVC不会保留数据,true则保留数据
mountOptions:- hard ## 指定为硬挂载方式- nfsvers4 ## 指定NFS版本,这个需要根据NFS Server版本号设置kubectl apply -f nfs-storage.yaml 4.K8S master节点部署HELM3
1Helm版本与K8S集群兼容
Helm | Helm版本支持策略 2查看K8S集群状态
# kubectl get node3策略
当前K8S 集群为1.20.6版本选择HELM 3.8.1 版本。
4部署 1安装 helm
//下载二进制 Helm client 安装包
wget https://get.helm.sh/helm-v3.8.1-linux-amd64.tar.gztar -zxvf helm-v3.8.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm version//命令补全
source (helm completion bash)2使用 helm 安装 Chart
//添加常用的 chart 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts3) 更新 charts 列表
helm repo update
helm repo list
安装 使用 helm 安装 Chart 4.K8S master节点部署Minio存储服务第一种方式安装
1Minio官方文档
minio 13.4.2 · bitnami/bitnami (artifacthub.io)
2获取最新minio charts
1)查询 minio 资源
helm search repo minio2)创建目录
mkdir -p /root/minio/ cd /root/minio/3)拉取 chart 到本地目录
第一种方式
helm fetch bitnami/minio --version 13.3.3
第二种方式
helm pull bitnami/minio --version 13.3.3 4)解压
tar -zxvf minio-13.3.3.tgz
cp minio/values.yaml ./values-test.yaml5查看当前目录层级
tree -L 2
.
├── minio
│ ├── Chart.lock
│ ├── charts
│ ├── Chart.yaml
│ ├── README.md
│ ├── templates
│ └── values.yaml
├── minio-13.3.3.tgz
└── values-test.yaml
查询 拉取解压 查看目录 3查看集群 storageclasses
kubectl get storageclasses.storage.k8s.io 4修改配置文件
vim values-test.yaml (5)安装minio集群
helm install minio minio -f values-test.yaml-n 指定 kubernetes 集群名称空间
-f 指定使用的配置文件文件中定义的配置可以覆盖 minio/values.yaml 文件中配置NAME: minio
LAST DEPLOYED: Thu Feb 8 09:03:41 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: minio
CHART VERSION: 13.3.3
APP VERSION: 2024.1.31** Please be patient while the chart is being deployed **MinIOreg; can be accessed via port on the following DNS name from within your cluster:minio.default.svc.cluster.localTo get your credentials run:export ROOT_USER$(kubectl get secret --namespace default minio -o jsonpath{.data.root-user} | base64 -d)export ROOT_PASSWORD$(kubectl get secret --namespace default minio -o jsonpath{.data.root-password} | base64 -d)To connect to your MinIOreg; server using a client:- Run a MinIOreg; Client pod and append the desired command (e.g. admin info):kubectl run --namespace default minio-client \--rm --tty -i --restartNever \--env MINIO_SERVER_ROOT_USER$ROOT_USER \--env MINIO_SERVER_ROOT_PASSWORD$ROOT_PASSWORD \--env MINIO_SERVER_HOSTminio \--image docker.io/bitnami/minio-client:2024.1.31-debian-11-r1 -- admin info minioTo access the MinIOreg; web UI:- Get the MinIOreg; URL:echo MinIOreg; web URL: http://127.0.0.1:9001/miniokubectl port-forward --namespace default svc/minio 9001:9001 (6) 查看
helm listkubectl get deploykubectl get podkubectl get pod -o wide (7) 查看pv与pvc
kubectl get pvkubectl get pvc 8NFS 查看卷
ls ls | grep minio5.Minio客户端安装MC命令
1下载
wget https://dl.min.io/client/mc/release/linux-amd64/mc
2安装
chmod ax mcmv mc /usr/local/bin/mc --version(3) 配置访问minio
mc config host add minio http://10.99.219.173:9000 minio minio123 --api S3v4# 查看配置不同 mc 版本以下内容输出可能不一定完全相同
mc config host listgcs URL : https://storage.googleapis.comAccessKey : YOUR-ACCESS-KEY-HERESecretKey : YOUR-SECRET-KEY-HEREAPI : S3v2Path : dnslocalURL : http://localhost:9000AccessKey : SecretKey : API : Path : autominioURL : http://10.99.219.173:9000AccessKey : minioSecretKey : minio123API : S3v4Path : autoplay URL : https://play.min.ioAccessKey : Q3AM3UQ867SPQQA43P2FSecretKey : zuftfteSlswRu7BJ86wekitnifILbZam1KYY3TGAPI : S3v4Path : autos3 URL : https://s3.amazonaws.comAccessKey : YOUR-ACCESS-KEY-HERESecretKey : YOUR-SECRET-KEY-HEREAPI : S3v4Path : dns6.K8S master节点使用Docker 部署Minio存储服务第二种方式安装
1docker 命令去安装稳定版本的 minio
docker pull minio/minio 2创建存放数据的目录
# 一个用来存放配置一个用来存储上传文件的目录
# 启动前需要先创建Minio外部挂载的配置文件 /rootconfig,和存储上传文件的目录 /root/datamkdir -p /root/datamkdir -p /root/config (3) 创建Minio容器并运行多行模式
# 9090端口指的是minio的客户端端口
# MINIO_ACCESS_KEY 账号
# MINIO_SECRET_KEY 密码账号长度必须大于等于5密码长度必须大于等于8位docker run -p 9000:9000 -p 9090:9090 \--nethost \--name minio \-d --restartalways \-e MINIO_ACCESS_KEYminioadmin \-e MINIO_SECRET_KEYminioadmin \-v /root/data:/data \-v /root/config:/root/.minio \minio/minio server \/data --console-address :9090 -address :90004另一种方式创建Minio容器并运行单行模式
docker run -p 9000:9000 -p 9090:9090 --nethost --name minio -d --restartalways -e MINIO_ACCESS_KEYminioadmin -e MINIO_SECRET_KEYminioadmin -v /root/data:/data -v /root/config:/root/.minio minio/minio server /data --console-address :9090 -address :90005查看docker进程
docker ps | grep minio 6登录
http://192.168.204.180:9090/login 进入系统 7创建用户 填写信息 8完成创建 9创建组 (10)创建accessKey和secretKey 查看 11创建Bucket 查看 12上传文件 查看 二、问题
1.K8S无法删除pvpvc问题
1报错
error: resource(s) were provided, but no name was specified
2原因分析
删除顺序不对。
3解决方法
正确的删除顺序1先删除pod
helm -n devops uninstall minio(项目名称) 2解除pv绑定
kubectl patch pv pvname(pv名称) -p {metadata:{finalizers:null}}3解除pvc绑定
kubectl patch pvc pvcname(pvc名称) -p {metadata:{finalizers:null}}4) 删除pv
kubectl delete pv pvname(pv名称) -n devops5) 删除pvc
kubectl delete pvc pvname(pvc名称) -n devops2.minio 部署模式有哪些
1模式
1standalone
独立模式下服务部署数量为1个3distributed
分别模式下服务部署数量必须大于4个
2standalone模式 创建服务部署数量为1个
3distributed模式 创建 服务部署数量为4个 3.pod Readiness探针与Liveness探针失败
(1)报错
通过yaml文件创建pod时执行完yaml文件过一会就开始报错说Back-off restarting failed container。
查看pod状态一致处于CrashLoopBackOff
kubectl get pod kubectl describe pod minio-9c678d65c-45js9 2原因分析
Back-off restarting failed container的Warning事件一般是由于通过指定的镜像启动容器后容器内部没有常驻进程导致容器启动成功后即退出从而进行了持续的重启。
3解决方法
如果是通过yaml文件创建的pod找到对应的deployment增加命令command: [/bin/bash, -ce, tail -f /dev/null]
kubectl edit deploy 4. 添加 MinIO服务失败
1报错 2原因分析
端口不能漏–api不能漏
3解决方法
连接
mc config host add minio http://10.99.219.173:9000 minio minio123 --api S3v4 如需删除
mc config host remove minio 5.docker创建容器失败
1报错 2原因分析
容器名称重复
3解决方法
查看
docker ps -a 删除
docker rm -f a17f4299e7bd 成功
docker run -p 9000:9000 --name minio -v /root/data:/data -v /root/config:/root/.minio minio/minio server /data6.K8S如何快速创建Minio存储
1官方文档
MinIO Object Storage for Kubernetes — MinIO Object Storage for Kubernetes
2下载 MinIO 对象
curl https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml -O
3应用 MinIO 对象定义
kubectl apply -f minio-dev.yaml
命令输出应如下所示
namespace/minio-dev created
pod/minio created
4验证 Pod 的状态
kubectl get pods -n minio-dev
5检索有关 Pod 状态的详细信息
kubectl describe pod/minio -n minio-devkubectl logs pod/minio -n minio-dev
6临时访问 MinIO S3 API 和控制台
使用以下命令将流量从 MinIO Pod 临时转发到本地计算机
#该命令在 shell 中处于活动状态时将 pod 端口转发到本地计算机上的匹配端口。 该命令仅在 shell 会话中处于活动状态时起作用。 终止会话将关闭本地计算机上的端口。#要配置对 Pod 的长期访问需要在 Kubernetes 中配置 Ingress 或类似的网络控制组件以路由进出 Pod 的流量。kubectl port-forward pod/minio 9000 9090 -n minio-dev
7浏览器连接到 MinIO 服务器
通过在本地计算机上打开浏览器并导航到 来访问 MinIO 控制台。http://127.0.0.1:9001使用凭据 登录控制台。 这些是默认的 root 用户凭证。minioadmin | minioadmin
8连接 MinIO 客户端
如果本地计算机已安装mc请使用以下命令进行身份验证并连接到 MinIO 部署
mc alias set k8s-minio-dev http://127.0.0.1:9000 minioadmin minioadmin
mc admin info k8s-minio-dev