2022年10月更文挑战20-k8s进行sentinel部署

139 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

k8s进行sentinel部署

前文

本文内容主要是通过k8s进行sentinel部署的过程及其中相关内容的总结。文章内容为个人整理,难免存在不准确之处。

sentinel的部署

要进行sentinel服务的部署,我们首先需要判断采用无状态部署还是有状态的部署。根据sentinel本身的特性,采用有状态部署statefulSet是一种更好的选择。因此首先需要进行statefulSet的创建。我们选择sentinel的镜像为bladex/sentinel-dashboard:latest,通过该镜像可以直接在pod中进行sentinel服务的创建,具体创建的yaml如下所示:

kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: sentinel
  namespace: global
  labels:
    app: sentinel
  annotations:
    kubesphere.io/creator: admin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sentinel
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: sentinel
    spec:
      containers:
        - name: container-nrwn20
          image: 'bladex/sentinel-dashboard:latest'
          ports:
            - name: tcp-8719
              containerPort: 8719
              protocol: TCP
            - name: tcp-8858
              containerPort: 8858
              protocol: TCP
          resources:
            limits:
              memory: 256Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
      schedulerName: default-scheduler
  serviceName: sentinel-vfdr
  podManagementPolicy: OrderedReady
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
      partition: 0
  revisionHistoryLimit: 10

执行该yaml的创建后,我们便可以创建出一个sentinel的statefulSet。但是由于我们的sentinel服务使用时,不仅仅需要来自其他服务的访问,也希望能够给予外部访问的地址。而上述我们所创建的有状态服务,只会自动创建出一个无头服务,无法提供外部的访问。因此我们需要手动进行一个nodeport方式服务的创建,将sentinel的进行对外的暴露,提供8858端口即可能够访问可视化界面。

除此之外,为了方便服务在访问sentinel时的数据配置,我们还设置了一个配置文件,在其中进行访问域名及访问端口的设置。实际的业务服务在创建时,直接从配置文件中进行相关数据的读取即可,不需要各个服务重新配置。通过环境变量的方式引入到各个容器内部,方便后续的操作处理。

image.png

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。