StatefulSet简单使用

2019-10-08  本文已影响0人  哦呵呵_3579

在k8s中,StatefulSet用来解决有状态服务的问题,当一些有状态服务需要相互访问的时候就需要用到Headless Service来进行代理。

apiVersion: v1
kind: Service
metadata:  
    name: consul
    namespace: consul
    labels:
      name: consul
spec:  
    type: ClusterIP  
    clusterIP: None
    ports:    
    - name: http      
      port: 8500      
      targetPort: 8500    
    selector:    
        app: consul
---
apiVersion: apps/v1beta1 
kind: StatefulSet
metadata:
  namespace: consul
  name: consul
spec:
  serviceName: consul
  replicas: 3
  template: 
    metadata:
      labels:
        app: consul
....

其中Service的spec.selector选中对应需要代理的StatefulSet,StatefulSet中spec.serviceName使用的是Service的metadata.name,当启动之后可以通过一下规则来实现pod之间的互相访问,statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local,其中serviceName为spec.serviceName,并且需要Service和StatefulSet必须在同一个namespace下。

上一篇 下一篇

猜你喜欢

热点阅读