ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(合理的安排时间就等于节约时间 -培根)
ㅤㅤㅤ
ㅤㅤㅤ
ㅤㅤㅤㅤㅤㅤㅤㅤㅤ
上一篇:kubernetes 入门实践-操作k8s集群
该教程将演示k8s有状态服务的核心概念和部署,如果没有部署过k8s应用,建议先看一下kubernetes 入门实践-操作k8s集群后再来看这篇文章
StatefulSets 动态存储
StatefulSets是同来管理有状态服务的k8s api
它和无状态服务Deployments的区别是
- 稳定的、唯一的网络标识符
- 从0-1的顺序标记pod名称的后缀,比如vue-pod-0 vue-pod-1 vue-pod-2
- pod内部的hostname也会保持不变
- 稳定的、持久的存储
- 基于PVC,Pod重新调度后仍能访问到相同的持久化数据
- 有序的、优雅的部署和缩放
- 按照顺序依次执行,下一个pod结束之前,之前的pod都需要删除完成
- 有序的、自动的滚动更新
- 按照顺序一次部署,下一个pod部署之前,之前的pod必须部署完成
编写statefulset应用部署文件
test-statefulset.yaml
apiVersion: v1
kind: Service
metadata:
name: vue-service-statefulset
namespace: vue
labels:
app: vue-service-labels-statefulset
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: vue-pod-statefulset
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
namespace: vue
spec:
selector:
matchLabels:
app: vue-pod-statefulset # has to match .spec.template.metadata.labels
serviceName: "nginx"
replicas: 3 # by default is 1
template:
metadata:
name: vue-pod-statefulset
labels:
app: vue-pod-statefulset # has to match .spec.selector.matchLabels
spec:
terminationGracePeriodSeconds: 10
containers:
- name: vue-container
image: zhangzwmmm/cgame:vue-master-2919c3e2acd37a1d69cfd2fe1b943d03eb02ac68
ports:
- containerPort: 80
name: web
应用配置文件
kubectl apply -f test-statefulset.yaml
查看部署结果
有序的pod名称
根据pod序号有序的部署服务
部署中
部署完成
缩减服务
按照序号 倒叙的进行缩减
扩容服务
按照序号 正序的进行增加
访问部署服务
查看其中一个pod的ip
访问