k8s中的StatefulSet
1 .由于工作中要部署一些有状态服务例如 rediskafkamysql 每个人都会部署集群,然而在k8s中部署他们的集群模式,就要用到StatefulSet。除此之外,StatefulSet在Headless Service的基础上又为StatefulSet控制的每个Pod副本创建了一个DNS域名,这个域名的格式为:(podname).(headlessservername)FQDN:(podn
1 .由于工作中要部署一些有状态服务
例如 redis kafka mysql 每个人都会部署集群,然而在k8s中部署他们的集群模式,就要用到StatefulSet。
除此之外,StatefulSet在Headless Service的基础上又为StatefulSet控制的每个Pod副本创建了一个DNS域名,这个域名的格式为:
(
p
o
d
n
a
m
e
)
.
(
h
e
a
d
l
e
s
s
s
e
r
v
e
r
n
a
m
e
)
F
Q
D
N
:
(podname).(headless server name) FQDN:
(podname).(headlessservername)FQDN:(podname).(headless server name).namespace.svc.cluster.local
2.特点
(1).Pod一致性:包含次序(启动、停止次序)、网络一致性。此一致性与Pod相关,与被调度到哪个node节点无关;
(2).稳定的次序:对于N个副本的StatefulSet,每个Pod都在[0,N)的范围内分配一个数字序号,且是唯一的;
(3).稳定的网络:Pod的hostname模式为( s t a t e f u l s e t 名 称 ) − (statefulset名称)-(statefulset名称)−(序号);
(4).稳定的存储:通过VolumeClaimTemplate为每个Pod创建一个PV。删除、减少副本,不会删除相关的卷。
kubectl explain sts.spec :主要字段解释
replicas :副本数
selector:那个pod是由自己管理的
serviceName:必须关联到一个无头服务商
template:定义pod模板(其中定义关联那个存储卷)
volumeClaimTemplates :生成PVC
部署一个StatefulSet重要的几点
1.要有存储,pv,pvc来满足
2.创建configmap来管理自己的配置文件
3.创建headless服务来保证每个pod的hostname,可以用集群内部的dns来解析
4.创建StatefulSet
5.如果需要外部访问,请开一个端口
下面以redis 哨兵模式在k8s中部署为例子
实验:
更多推荐
所有评论(0)