设为首页 收藏本站
查看: 1076|回复: 0

[经验分享] Docker(二十七)k8s 搭建有状态集群服务1

[复制链接]

尚未签到

发表于 2019-2-21 08:15:43 | 显示全部楼层 |阅读模式
  以consul 为例
  首先搭建有状态集群服务,先要了解服务集群本身的工作原理,conusl 在启动的时候,是只要bootstrap-expect 达到数量,集群内部就可以选举出leader
  另外,headless 服务,和一般service 相比,差别是,没有clusterip,所以在发现服务的时候,是直接绑定了dns,所以在consul 节点加入集群的时候,可以写-retry-join=$(NAMESPACE), 这个里的命名空间变量是headless 的服务名字,nslookup 解析的时候 就可以解析出集群的所有绑定上的ip
  以下为yaml 配置
  这里有必要提一句,一般无头服务都要配置动态存储来使用,这样方便 当集群中有成员挂掉,当再次加入进群的时候,会根据自身的id 与绑定的存储空间,可以快速加载之前的数据
consul_statefulset.yml
consul_statefulset.ymlconsul_statefulset.ymlapiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: qa-consul
spec:
  serviceName: qa-consul
  replicas: 5
  template:
    metadata:
      labels:
        app: qa-consul
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: app
                    operator: In
                    values:
                      - qa-consul
              topologyKey: kubernetes.io/hostname
      terminationGracePeriodSeconds: 10
      containers:
      - name: consul
        image: consul:latest
        args:
             - "agent"
             - "-server"
             - "-bootstrap-expect=3"
             - "-ui"
             - "-data-dir=/consul/data"
             - "-bind=0.0.0.0"
             - "-client=0.0.0.0"
             - "-advertise=$(PODIP)"
             - "-retry-join=qa-consul"
            # - "-retry-join=consul-0.consul.$(NAMESPACE).svc.cluster.local"
            # - "-retry-join=consul-1.consul.$(NAMESPACE).svc.cluster.local"
            # - "-retry-join=consul-2.consul.$(NAMESPACE).svc.cluster.local"
             - "-domain=cluster.local"
             - "-disable-host-node-id"
        volumeMounts:
            - name: data
              mountPath: /consul/data
        env:
            - name: PODIP
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
        ports:
            - containerPort: 8500
              name: ui-port
            - containerPort: 8400
              name: alt-port
            - containerPort: 53
              name: udp-port
            - containerPort: 8443
              name: https-port
            - containerPort: 8080
              name: http-port
            - containerPort: 8301
              name: serflan
            - containerPort: 8302
              name: serfwan
            - containerPort: 8600
              name: consuldns
            - containerPort: 8300
              name: server
      volumes:
        - name: data
          hostPath:
            path: /home/dataconsul_service.yml
apiVersion: v1
kind: Service
metadata:  
    name: qa-consul  
    labels:   
      name: qa-consul
spec:  
    type: ClusterIP  
    ports:   
     - name: http      
       port: 8500      
       targetPort: 8500   
     - name: https      
       port: 8443      
       targetPort: 8443   
     - name: rpc      
       port: 8400      
       targetPort: 8400   
     - name: serflan-tcp      
       protocol: "TCP"      
       port: 8301      
       targetPort: 8301   
     - name: serflan-udp      
       protocol: "UDP"      
       port: 8301      
       targetPort: 8301   
     - name: serfwan-tcp      
       protocol: "TCP"      
       port: 8302      
       targetPort: 8302   
     - name: serfwan-udp      
       protocol: "UDP"      
       port: 8302      
       targetPort: 8302   
     - name: server      
       port: 8300      
       targetPort: 8300   
     - name: consuldns      
       port: 8600      
       targetPort: 8600  
    selector:   
      app: qa-consul
    clusterIP: None

bootstrap-expectbootstrap-expectbootstrap-expect  未完 待续。。。。。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675085-1-1.html 上篇帖子: Docker数据管理及网络通信 下篇帖子: Docker数据管理与网络通信之镜像的创建方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表