22.StatefulSet中Pod的标识

StatefulSet中得Pod具备一个唯一标识,该标识由如下部分组成:

  1. 序号
  2. 稳定的网络标识
  3. 稳定的存储

序号

假设一个StatefulSet的副本数为N,其中的每一个Pod都会被分配一个序号,序号的取值范围从0到N - 1,并且该序号在StatefulSet内部是唯一的。

稳定的网络ID

  1. StatefulSet中Pod的hostname格式为$(StatefulSet name)-$(Pod 序号)。上面的例子将要创建三个 Pod,其名称分别为: web-0,web-1,web-2。

  2. StatefulSet可以使用Headless Service来控制其Pod所在的域。该域的格式为`$(service name).$(namespace).svc.cluster.local ,其中“cluster.local”是集群的域。(什么叫做控制pod所在的域啊?)

  3. StatefulSet中每一个Pod将被分配一个dnsName,格式为:$(podName).$(所在域名)

稳定的存储

Kubernetes为每一个VolumeClaimTemplate创建一份PersistentVolume。在上面的例子中,每一个 Pod都将由StorageClass——my-storage-class为其创建一个1Gib大小的PersistentVolume。当Pod被调度(或重新调度)到一个节点上,其挂载点将挂载该存储卷声明(关联到该 PersistentVolume)。