k8s 1.26集群安装-CSDN博客
机器配置
1主2从,提前安装好k8s集群
192.168.10.106=n1
192.168.10.107=n2
192.168.10.108=m1
主节点安装nfs
yum install -y nfs-utils rpcbind
systemctl restart rpcbind
systemctl enable rpcbind
systemctl restart nfs
systemctl enable nfs
从节点安装nfs
yum -y install nfs-utils
systemctl enable nfs
在主节点创建dev命名空间
kubectl create ns dev
查看命名空间
kubectl get ns
创建nfs存储目录
下面的操作都是在主节点
创建nfs存储目录
mkdir -p /data/nfs/redis
把目录暴露给内网访问,就是pod会访问这些目录
vi /etc/exports
/data/nfs/redis *(rw,sync,no_root_squash)
然后重启nfs-server
systemctl restart rpcbind
systemctl enable rpcbind
systemctl restart nfs
systemctl enable nfs
校验是否成功
showmount -e 192.168.10.108
创建configmap
vi redis-cm.yaml
apiVersion: v1
data:
redis.conf: |
# 关闭保护模式
protected-mode no# redis链接密码
# requirepass redis# 日志级别
loglevel warning# 日志存放目录
logfile "/data/redis.log"# 数据文件目录
dir /data
dbfilename dump.rdb# 数据库数量
databases 16# 保存数据库到数据文件
save 900 1
save 300 10
save 60 10000
kind: ConfigMap
metadata:
name: redis-cm
namespace: dev
执行
kubectl apply -f redis-cm.yaml
查看configmap
kubectl get cm -n dev
创建pv和pvc
vi redis-pv-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: redis-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.10.108
path: /data/nfs/redis
storageClassName: "nfs"---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-pvc
namespace: dev
spec:
accessModes:
- ReadWriteMany
storageClassName: "nfs"
resources:
requests:
storage: 1Gi
volumeName: redis-pv
执行
kubectl apply -f redis-pv-pvc.yaml
查看pv和pvc
kubectl get pv
kubectl get pvc -n dev
创建service
vi redis-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-svc
namespace: dev
labels:
app: redis
spec:
ports:
- port: 6379
name: redis
targetPort: 6379
nodePort: 30379
# 如果需要NodePort暴露则将这里注释
#clusterIP: None
selector:
app: redis
# 如果需要NodePort暴露则将这里改为NodePort
# ClusterIP, NodePort, LoadBalancer
type: NodePort
# 如果需要NodePort暴露则将这里改为ClientIP
# ClientIP, None
sessionAffinity: ClientIP
执行
kubectl apply -f redis-svc.yaml
查看
kubectl get svc -n dev
创建有状态的pod
serviceName和service绑定
claimName和pvc绑定
configMap的name和configmap绑定
vi redis-pod.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
namespace: dev
spec:
selector:
matchLabels:
app: redis
serviceName: redis-svc
replicas: 1
template:
metadata:
labels:
app: redis
spec:
terminationGracePeriodSeconds: 10
containers:
- command:
- "redis-server"
- "/usr/local/etc/redis.conf"
name: redis
image: redis:latest
ports:
- containerPort: 6379
name: redis
volumeMounts:
- name: redis-data
mountPath: /data
- name: redis-config
mountPath: /usr/local/etc
readOnly: true
volumes:
- name: redis-data
persistentVolumeClaim:
claimName: redis-pvc
- name: redis-config
configMap:
name: redis-cm
items:
- key: redis.conf
path: redis.conf
执行
kubectl apply -f redis-pod.yaml
查看
kubectl get pods -o wide -n dev
连接redis
通过service暴露出来的端口连接
springboot配置redis
通过service暴露出来的端口连接
数据都会在nfs目录存储