K8S statefulset

不同于rc、rs、deployment等控制器,statefulset面向的是有状态的服务。创建statefulset后一并与之创建对应的PVC,且每个PVC与创建的pod之间的绑定关系不会随pod的删除而改变,在pod根据replica定义的副本数量再生后,其持久化的数据因此也不会改变。创建后可通过pod.sv.ns的方式来访问,例如web-0.nginx.app01

[root@k8s-master-01 volumeTest]# cat sts.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None  #声明clusterIP为None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx # has to match .spec.template.metadata.labels
  serviceName: "nginx" #指定无头服务名
  replicas: 2 # by default is 1
  minReadySeconds: 10 # by default is 0
  template:
    metadata:
      labels:
        app: nginx # has to match .spec.selector.matchLabels
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "nfssc"  #使用之前定义过的StorageClass作为存储。
      resources:
        requests:
          storage: 1Gi
#应用该sts文件过,查看PVC以及pod状态,可见自动创建了pvc
[root@k8s-master-01 volumeTest]# kubectl get pvc
NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
www-web-0   Bound    pvc-7410035a-01ae-46a4-8cd2-31745492aef9   1Gi        RWO            nfssc          91s
www-web-1   Bound    pvc-ee7695d0-6a1d-4650-87f2-b68c7bdbf53e   1Gi        RWO            nfssc          51s
[root@k8s-master-01 volumeTest]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
dbpod   1/1     Running   0          4h21m
web-0   1/1     Running   0          95s
web-1   1/1     Running   0          55s
#删除上述pods
[root@k8s-master-01 volumeTest]# kubectl delete pod web-{0,1}
pod "web-0" deleted
pod "web-1" deleted
#删除后pods再生,pod名字保持不变且根据其age时间可知创建顺序也没有变化。而不同于deployement的同时创建。
[root@k8s-master-01 volumeTest]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
dbpod   1/1     Running   0          4h29m
web-0   1/1     Running   0          24s
web-1   1/1     Running   0          4s
#查看创建的svc
[root@k8s-master-01 volumeTest]# kubectl get svc
NAME    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
mysvc   NodePort    10.96.179.103   <none>        80:31524/TCP   2d20h
nginx   ClusterIP   None            <none>        80/TCP         12m
#创建一个testpod通过nslookup的方式访问服务,访问方式为“pod名.svc名”
[root@k8s-master-01 volumeTest]# kubectl run testpod --image=busybox:1.28 \
--image-pull-policy=IfNotPresent -it
/ # nslookup web-0.nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      web-0.nginx
Address 1: 10.244.1.51 web-0.nginx.app01.svc.cluster.local

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值