标签:状态 副本 name kubernetes kubectl 部署 pod spec metadata
有状态应用要求管理者配置文件中列出所有其它的集群成员和他们的ip地址。
StatefulSet
有状态的应用中每一个实例都是不可替代的个体,都拥有稳定的名字和状态
如果使用StatefulSet,当有一个pod挂掉后,这个实例需要在别的节点上重建,但是新的实例必须与被替换的实例拥有相同的名称、网络标识和状态。
因为有状态的服务会根据先前的访问做一些不同的处理,所以,我们要将所有的有状态的pod做headless service。当调用时,会返回每个pod的ip。
创建StatefulSet控制器管理的pod
我们首先创建数据卷
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-a
spec:
capacity:
storage: 2Mi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: standard
hostPath:
path: /tmp
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-b
spec:
capacity:
storage: 2Mi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: standard
hostPath:
path: /tmp
创建两个数据卷之后,再创建SatefulSet管理的pod
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: first-state
spec:
selector:
matchLabels:
app: myapp
serviceName: first-state
replicas: 2
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: luksa/kubia-pet
ports:
- containerPort: 8080
name: web
volumeMounts:
- name: data
mountPath: /var/data
readOnly: false
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 2Mi
创建pod
kubectl create -f statetest.yaml
查看状态
#查看数据卷的状态
kubectl get pv
#查看数据卷声明的状态
kubectl get pvc
如果此时删除一个pod
kubectl delete po first-state-0
你会发现,会自动新创建一个pod,新创建的pod和之前删除的pod名称相同。
标签:状态,副本,name,kubernetes,kubectl,部署,pod,spec,metadata 来源: https://blog.csdn.net/Xiang_lhh/article/details/120977906
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。