StatefulSet中得Pod具备一个唯一标识,该标识由如下部分组成:
- 序号
- 稳定的网络标识
- 稳定的存储
序号
假设一个StatefulSet的副本数为N,其中的每一个Pod都会被分配一个序号,序号的取值范围从0到N - 1,并且该序号在StatefulSet内部是唯一的。
稳定的网络ID
-
StatefulSet中Pod的hostname格式为
$(StatefulSet name)-$(Pod 序号)
。上面的例子将要创建三个 Pod,其名称分别为: web-0,web-1,web-2。 -
StatefulSet可以使用Headless Service来控制其Pod所在的域。该域的格式为`$(service name).$(namespace).svc.cluster.local ,其中“cluster.local”是集群的域。(什么叫做控制pod所在的域啊?)
-
StatefulSet中每一个Pod将被分配一个dnsName,格式为:
$(podName).$(所在域名)
稳定的存储
Kubernetes为每一个VolumeClaimTemplate创建一份PersistentVolume。在上面的例子中,每一个 Pod都将由StorageClass——my-storage-class为其创建一个1Gib大小的PersistentVolume。当Pod被调度(或重新调度)到一个节点上,其挂载点将挂载该存储卷声明(关联到该 PersistentVolume)。