k8s部署sentinel

机器配置

192.168.10.106=n1

192.168.10.107=n2

192.168.10.108=m1

k8s使用的1.26版本

前置条件

docker安装harbor-CSDN博客

k8s 1.26集群安装-CSDN博客 

下载jar包

把jar包上传到下面的目录 

 https://github.com/alibaba/Sentinel/releases/download/1.7.0/sentinel-dashboard-1.7.0.jar

mkdir -p /opt/sentinel

cd /opt/sentinel

创建Dockerfile 文件,把jar包打成镜像

vim Dockerfile

 # 基础镜像使用java
FROM java:8
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD sentinel-dashboard-1.7.0.jar app.jar
# 运行jar包
ENTRYPOINT ["java","-jar","app.jar"]

# 暴露8080端口
EXPOSE 8080
EXPOSE 8719

把jar打成docker镜像 

docker build -t sentinel:0.1 .

对生成好的镜像打标签,然后推送到harbor仓库中

docker images

对镜像id打标签

docker tag 75dd2fb30337 192.168.10.108:80/public/sentinel:0.1

登录harbor 

docker login -u admin -p Harbor12345 192.168.10.108:80

向harbor推送镜像

docker push 192.168.10.108:80/public/sentinel:0.1

 public项目在harbor提前创建好 

创建configmap

cat > sentinel-cm.yaml <<-'EOF'
apiVersion: v1
kind: ConfigMap
metadata:
  name: sentinel-cm
  namespace: dev
data:
  sentinel.server.host: "sentinel"
  sentinel.server.port: "8080"
  sentinel.dashboard.auth.username: "sentine"
  sentinel.dashboard.auth.password: "sentine"
  
EOF

执行

kubectl apply -f sentinel-cm.yaml 

查看cm

kubectl get cm -n dev

创建pod 

serviceName要和svc的name一致

绑定configmap

绑定harbor的登录信息

vi sentinel-pod.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: sentinel
  namespace: dev
  labels:
    app: sentinel
spec:
  serviceName: sentinel-svc
  replicas: 1
  selector:
    matchLabels:
      app: sentinel
  template:
    metadata:
      labels:
        app: sentinel
    spec:
      containers:
        - name: sentinel
          image: 192.168.10.108:80/public/sentinel:0.1
          imagePullPolicy: IfNotPresent
          resources:
            limits:
              cpu: 450m
              memory: 1024Mi
            requests:
              cpu: 400m
              memory: 1024Mi
          env:
            - name: TZ
              value: Asia/Shanghai
            - name: JAVA_OPT_EXT
              value: -Dserver.servlet.session.timeout=7200
            - name: SERVER_HOST
              valueFrom:
                configMapKeyRef:
                  name: sentinel-cm
                  key: sentinel.server.host
            - name: SERVER_PORT
              valueFrom:
                configMapKeyRef:
                  name: sentinel-cm
                  key: sentinel.server.port
            - name: USERNAME
              valueFrom:
                  configMapKeyRef:
                    name: sentinel-cm
                    key: sentinel.dashboard.auth.username
            - name: PASSWORD
              valueFrom:
                  configMapKeyRef:
                    name: sentinel-cm
                    key: sentinel.dashboard.auth.password
          ports:  
            - containerPort: 8080 #Dashboard服务的端口 客户端向控制台发送心跳包的控制台地址,指定控制台后客户端会自动向该地址发送心跳包
            - containerPort: 8719 #客户端的端口 提供给Dashboard访问
      imagePullSecrets:
        - name: harbor-secret 

执行

kubectl apply -f sentinel-pod.yaml 

创建service

vi sentinel-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: sentinel-svc
  namespace: dev
  labels:
    app: sentinel
spec:
  type: ClusterIP
  ports:
    - port: 8080
      targetPort: 8080
      name: web
    - port: 8719
      targetPort: 8719
      name: api
  selector:
    app: sentinel

执行

 kubectl apply -f sentinel-svc.yaml

查看pod和svc

 kubectl get pods,svc -n dev -o wide

创建ingress

安装ingress

kubectl apply -f http://manongbiji.oss-cn-beijing.aliyuncs.com/ittailkshow/k8s/download/ingress-nginx-1.5.1.yaml

查看ingress暴露的端口号31266

kubectl get all -n ingress-nginx

上面的service是集群ip模式,不能在浏览器访问,所以需要ingress暴露端口号 才能在浏览器访问

要绑定svc的名称和端口号,name和number不能随便写 

使用域名在浏览器访问

cat > ingress-sentinel.yaml <<-'EOF'
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-sentinel
  namespace: dev
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: dmg.pwd.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: sentinel-svc
            port:
              number: 8080
EOF

执行

 kubectl apply -f ingress-sentinel.yaml

查看ingress

kubectl get ingress -n dev

在windows电脑上面提前配置好hosts

C:\Windows\System32\drivers\etc

192.168.10.107 dmg.pwd.com

使用ingress暴露的端口号在浏览器访问

http://dmg.pwd.com:31266

查看pod日志

kubectl logs -f sentinel-0 -n dev 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Kubernetes上部署Redis主从集群可以采用不同的方法。一种常见的方法是使用StatefulSet来部署Redis。StatefulSet是为了解决有状态服务的问题而设计的,它可以为每个Pod分配固定的名称和稳定的网络标识。在Redis的部署中,可以使用StatefulSet来管理Redis的主从节点。同时,可以使用Headless Service来为StatefulSet提供服务,Headless Service不会分配Cluster IP,而是返回所有Pod的Endpoint列表。这样可以确保在主从切换时,客户端可以正确地访问到Redis节点。\[3\] 另一种方法是在Kubernetes上创建一个额外的容器,专门用于进行Redis集群的管理控制。可以在该容器中安装Redis-tribe工具,通过该工具来初始化Redis集群。这种方法可以避免将初始化逻辑写入StatefulSet中,从而简化部署过程。\[2\] 需要注意的是,在Kubernetes上部署Redis Sentinel可能没有意义。因为在容器中,Pod的IP地址在重启时会发生变化,而Sentinel是以IP地址来进行探测和配置的。这导致Sentinel无法识别宕机后重新启动的Master节点,从而无法加入集群。虽然可以通过固定Pod的IP地址或使用NodePort来解决这个问题,但在Kubernetes中,Pod的重启和活性检测已经可以保证Redis主从的高可用性。因此,个人认为在Kubernetes上部署Sentinel没有意义。\[3\] #### 引用[.reference_title] - *1* *3* [k8s部署高可用redis集群--三主三从](https://blog.csdn.net/Hlroliu/article/details/105859200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [K8S搭建redis主从集群](https://blog.csdn.net/zxc_123_789/article/details/122924616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值