持续创作,加速成长!这是我参与「掘金日新计划 · 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时的数据配置,我们还设置了一个配置文件,在其中进行访问域名及访问端口的设置。实际的业务服务在创建时,直接从配置文件中进行相关数据的读取即可,不需要各个服务重新配置。通过环境变量的方式引入到各个容器内部,方便后续的操作处理。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。