kubernetes使用 (十一)controller控制器--SatefulSet(无头service)

一. SatefulSet有状态服务控制器

什么是有状态服务? 什么是无状态服务?

1.无状态服务的特点

1. 认为pod都是一样的,创建的副本都是一样的
2. 没有顺序要求     #没有启动顺序要求
3.不用考虑在那个node上运行
4. 随意进行伸缩和扩展

#像我们之前部署的deployment就是无状态服务的控制器

2.有状态服务的特点

上面的因素都要考虑到
让每个pod都是独立的,保持pod的启动顺序和唯一性

 

##通过 唯一网络标识符、持久存储区分
##有序, 比如mysql主从  必须先有主后有从

 

二. 部署应用

在此之前我们需要先知道什么是"无头service"
之前我们的svc中是有ip地址的,无头svc没有ip,但是会生成一个类似域名的存在去提供访问

创建无头service

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None      #service的类型为无头svc
  selector:
    app: nginx

创建StatefulSet应用

apiVersion: apps/v1
kind: StatefulSet        #指定类型
metadata:
  name: nginx-statefulset
  namespace: default
spec:
  serviceName: nginx     #使用上面的svc
  replicas: 3      #給3个副本,每个都是独立的pod
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

部署

kubectl create -f ss.yaml
kubectl create -f ss-svc.yaml

查看pod

[root@k8s-master01 ~]# kubectl get pod
NAME                  READY   STATUS    RESTARTS   AGE
nginx-statefulset-0   1/1     Running   0          95s
nginx-statefulset-1   1/1     Running   0          55s
nginx-statefulset-2   1/1     Running   0          20s

#可以看到3个pod,都是用的唯一的名称,服务名称+0、1、2

查看svc

[root@k8s-master01 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   40d
nginx        ClusterIP   "None"         <none>        80/TCP    2m19s

#可以看到CLUSTER-IP的位置是None,说明是个无头service

现在他要保证pod都是独立的,保证pod的启动顺序和唯一性,这里使用唯一的网络标识或持久存储

他是怎么进行约定的呢?

statefuset和deployment的区别就是"唯一身份标识"

他会根据主机名、以及一定规则生成的域名来保证身份唯一

#每个pod都会有一个唯一的主机名,会生成唯一的域名

#固定格式:
   主机pod名称.service名称.名称空间.svc.cluster.local
   

#比如我们刚才那个生成出以下的唯一域名
nginx-statefulset-0.nginx.default.svc.cluster.local

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值