Kubernetes YAML 配置文件,部署一个 KeyDB 容器
vi keydb-deployment.yaml
内容如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: keydb-deployment
spec:
replicas: 1
selector:
matchLabels:
app: keydb
template:
metadata:
labels:
app: keydb
spec:
containers:
- name: keydb
image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/keydb:latest
ports:
- containerPort: 6379
volumeMounts:
- name: keydb-data
mountPath: /data/keyDB
env:
- name: KEYDB_PASSWORD
value: "87vhqEneQ5u8"
volumes:
- name: keydb-data
emptyDir: {} # 或者可以挂载一个持久化存储
---
apiVersion: v1
kind: Service
metadata:
name: keydb-service
spec:
selector:
app: keydb
ports:
- protocol: TCP
port: 6379 # 内部服务端口
targetPort: 6379 # 映射到容器内的端口
nodePort: 30378 # 对外暴露端口
type: NodePort
使用 kubectl 命令部署
接下来,使用 kubectl 命令将 YAML 配置应用到 Kubernetes 集群。
kubectl apply -f keydb-deployment.yaml
这将启动 Deployment 和 Service,并根据配置创建相应的资源。
3. 检查部署状态
执行以下命令来查看 Pod 和 Service 的状态:
kubectl get pods
kubectl get svc
你应该能够看到一个名为 keydb-deployment 的 Pod 正在运行,同时在 keydb-service 服务上可以访问到 30378 端口。
4. 验证外部访问
如果你的集群使用的是 NodePort 类型的服务,可以通过集群节点的 IP 地址和端口 30378 来访问
此时此刻就完成了。
持久化yaml如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: keydb-deployment
spec:
replicas: 1
selector:
matchLabels:
app: keydb
template:
metadata:
labels:
app: keydb
spec:
containers:
- name: keydb
image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/keydb:latest
ports:
- containerPort: 6379
volumeMounts:
- name: keydb-data
mountPath: /data/keyDB
env:
- name: KEYDB_PASSWORD
value: "87vhqEneQ5u8"
volumes:
- name: keydb-data
persistentVolumeClaim:
claimName: keydb-pvc
---
apiVersion: v1
kind: Service
metadata:
name: keydb-service
spec:
selector:
app: keydb
ports:
- protocol: TCP
port: 6379 # 内部服务端口
targetPort: 6379 # 映射到容器内的端口
nodePort: 30378 # 对外暴露端口
type: NodePort
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: keydb-pv
spec:
capacity:
storage: 10Gi # 设置存储大小,可以根据需要调整
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data/keydb # 这里使用宿主机的路径,如果是云环境,可以改成 NFS 或其他存储
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: keydb-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi # 与 PersistentVolume 的存储大小一致