美文网首页
Chaos mesh使用指南

Chaos mesh使用指南

作者: 蒙浩 | 来源:发表于2020-07-01 12:37 被阅读0次

    在云系统越来越普遍的今天,越来越多的公司开始把自己的服务做成微服务部署到kubernetes上,并托管到云供应商。
    微服务带来的好处自不必说,服务更好的隔离性,服务之间的依赖度下降,微服务的复杂度下降方便维护等等。但是微服务也带来了很大的问题,比如我们之前把所有服务放到一起,做到服务的可用性为97%,而换做微服务,就算只有两个微服务,每个稳定性到98%,总体系统的稳定性也只有96.04%,反而比之前做一个统一的服务器的稳定性差了。
    那么,如何让微服务也能有较高的稳定性呢?

    今天我们就来介绍一种方法,就是chaos mesh这种针对微服务的混沌测试系统。

    Chaos mesh 安装

    这部分官方提供的安装教程很详细,本人也在本地亲测过,可以完美运行[https://chaos-mesh.org/docs/installation/installation]

    Chaos mesh 使用

    这个地方有点小问题,chaos mesh提供的测试文件,labelSelectors使用的是"app.kubernetes.io/component": "tikv"。这个地方要根据你自己创建的pod的label来填写,如果lable里面没有使用app.kubernetes.io里面的字段,只使用了app或者其他字段,你就使用app或者其他字段,这个地方需要注意,不要硬套官方的yaml。
    所以我就用我本地已有的服务做了一个实验,本地服务brokerclinet:

    apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
    kind: Deployment
    metadata:
      name: brokerclinet
    spec:
      selector:
        matchLabels:
          app: brokerclinet
      replicas: 1 # tells deployment to run 2 pods matching the template
      template:
        metadata:
          labels:
            app: brokerclinet
        spec:
          containers:
          - name: brokerclinet
            image: brokerclient:1.0.0
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 5000
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: brokerclinet
      namespace: default
    spec:
      externalTrafficPolicy: Cluster
      ports:
      - nodePort: 32100
        port: 5000
        protocol: TCP
        targetPort: 5000
      selector:
        app: brokerclinet
      sessionAffinity: None
      type: NodePort
    

    部署成功后,可以部署podschaos了:

    apiVersion: pingcap.com/v1alpha1
    kind: PodChaos
    metadata:
      name: podk
    spec:
      action: pod-kill # the specific chaos action to inject; supported actions: pod-kill/pod-failure
      mode: one # the mode to run chaos action; supported modes are one/all/fixed/fixed-percent/random-max-percent
      duration: "60s" # duration for the injected chaos experiment
      selector: # pods where to inject chaos actions
        labelSelectors:
          app: brokerclinet  # the label of the pod for chaos injection
      scheduler: # scheduler rules for the running time of the chaos experiments about pods.
        cron: "@every 5m"
    

    这里要注意,官方给出的metadata里面会有namespace字段,但是如果要管理的pod不是该namesapce的话,就使用你pod所属的namespace。因为我的服务的namespace是default,所以我部署这个PodChaos时就没有填写namespace。
    这个地方如果你使用官方提供的chaos-testing,你可能就会发现你的chaos的controller manager,dashbord或者deamon的pod被删了。。。。。别问我怎么知道的。

    chaos mesh这个工具提供了dashbord,方便大家通过网页查看当前生效的chaos任务。要想访问该网页,可以使用:

    kubectl port-forward -n chaos-testing svc/chaos-dashboard 2333:2333
    

    你可以通过127.0.0.1:2333来访问,界面如下图:


    image.png

    如果你已经执行了上面的yaml文件,那么在Experiments栏就会出现你配置的chaos任务:


    image.png

    敲黑板了,这里要用chrome浏览器访问dashbord,要不会出现Experiments,Events,Archives界面无法正常显示,我用的是FireFox,最后只能用chrome访问了。

    相关文章

      网友评论

          本文标题:Chaos mesh使用指南

          本文链接:https://www.haomeiwen.com/subject/bkhcqktx.html