机器配置
192.168.10.106=n1
192.168.10.107=n2
192.168.10.108=m1
k8s使用的1.26版本
前置条件
docker安装harbor-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暴露的端口号在浏览器访问
查看pod日志
kubectl logs -f sentinel-0 -n dev