目录
1、java中的application.yaml文件
2、创建Dockerfile、打包
3、配置eureka.yaml
4、执行yaml文件,查看节点信息
5、浏览器访问
自己在学习k8s过程中做下的笔记,希望能帮助到一起学习的人
1、java中的application.yaml文件
server:
port: ${PORT:10086} # 自定义
spring:
application:
name: eureka
eureka:
server:
eviction-interval-timer-in-ms: 5000
enable-self-preservation: false
use-read-only-response-cache: false
client:
fetch-registry: false
register-with-eureka: false
registry-fetch-interval-seconds: 5
service-url:
defaultZone: ${EUREKA_SERVER:http://127.0.0.1:${server.port}/eureka/}
instance:
lease-renewal-interval-in-seconds: 5
lease-expiration-duration-in-seconds: 10
instance-id: ${EUREKA_INSTANCE_HOSTNAME:${spring.application.name}}:${server.port}}
hostname: ${EUREKA_INSTANCE_HOSTNAME:${spring.application.name}}
上面的变量会在下面的eureka.yaml配置文件中设置替换
EUREKA_SERVER、EUREKA_INSTANCE_HOSTNAME、EUREKA_INSTANCE_HOSTNAME
2、创建Dockerfile、打包
[root@master03 eureka]# vim Dockerfile
#jdk指向我的harbor私有镜像仓库
FROM harbor.swx.com/k8s/openjdk:8-jre-alpine
#备份jar包位置
COPY eureka-service.jar eureka.jar
#java命令执行jar包
ENTRYPOINT ["java", "-jar","/eureka.jar"]
#根据Dockerfile,打包镜像
[root@master03 eureka]# docker build -t harbor.swx.com/k8s/eureka:v1
3、配置eureka.yaml
[root@master03 eureka]# vim eureka.yaml
#配置的service
apiVersion: v1
kind: Service
metadata:
name: eureka #service名称
labels:
app: eureka
spec:
type: NodePort
ports:
- port: 10086 #自定义
name: eureka
targetPort: 10086 #要和jar中的port统一
selector:
app: eureka
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: eureka
spec:
serviceName: eureka
replicas: 2
selector:
matchLabels:
app: eureka
template:
metadata:
labels:
app: eureka
spec:
containers:
- name: eureka
image: harbor.swx.com/k8s/eureka:v1 #镜像地址
ports:
- containerPort: 10086 #要和jar中的prot统一
env:
- name: MY_POD_NAME #替换jar包中application.yml文件中的属性
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: EUREKA_SERVER #替换jar包中application.yml文件中的属性
#http + StatefulSet的name名称 + 系统自动添加的 【0-9】数字 + MY_POD_NAME的name
value: "http://eureka-0.eureka:10086/eureka/,http://eureka-1.eureka:10086/eureka/"
- name: EUREKA_INSTANCE_HOSTNAME #替换jar包中application.yml文件中的属性
value: ${MY_POD_NAME}.eureka
podManagementPolicy: "Parallel"
4、执行yaml文件,查看节点信息
#执行yaml文件
[root@master03 eureka]# kubectl apply -f eureka.yaml
#查看所有节点
[root@master03 eureka]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master01 Ready master 4d2h v1.19.0
master02 Ready master 4d1h v1.19.0
master03 Ready master 4d1h v1.19.0
node01 Ready 24h v1.19.0
node02 Ready 24h v1.19.0
#查看pod状态
[root@master03 eureka]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
eureka-0 1/1 Running 0 41m 10.244.196.139 node01
eureka-1 1/1 Running 0 41m 10.244.140.75 node02
#浏览器访问 node节点的ip + nodeport的端口
[root@master03 eureka]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
eureka NodePort 10.107.104.213 10086:32229/TCP 3m54s
kubernetes ClusterIP 10.96.0.1 443/TCP 4d1h
#我的节点ip
#node01 192.168.1.165
#node02 192.168.1.166
5、浏览器访问
[root@master03 eureka]# vim Dockerfile #jdk指向我的harbor私有镜像仓库 FROM harbor.swx.com/k8s/openjdk:8-jre-alpine #备份jar包位置 COPY eureka-service.jar eureka.jar #java命令执行jar包 ENTRYPOINT ["java", "-jar","/eureka.jar"] #根据Dockerfile,打包镜像 [root@master03 eureka]# docker build -t harbor.swx.com/k8s/eureka:v1
3、配置eureka.yaml
[root@master03 eureka]# vim eureka.yaml
#配置的service
apiVersion: v1
kind: Service
metadata:
name: eureka #service名称
labels:
app: eureka
spec:
type: NodePort
ports:
- port: 10086 #自定义
name: eureka
targetPort: 10086 #要和jar中的port统一
selector:
app: eureka
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: eureka
spec:
serviceName: eureka
replicas: 2
selector:
matchLabels:
app: eureka
template:
metadata:
labels:
app: eureka
spec:
containers:
- name: eureka
image: harbor.swx.com/k8s/eureka:v1 #镜像地址
ports:
- containerPort: 10086 #要和jar中的prot统一
env:
- name: MY_POD_NAME #替换jar包中application.yml文件中的属性
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: EUREKA_SERVER #替换jar包中application.yml文件中的属性
#http + StatefulSet的name名称 + 系统自动添加的 【0-9】数字 + MY_POD_NAME的name
value: "http://eureka-0.eureka:10086/eureka/,http://eureka-1.eureka:10086/eureka/"
- name: EUREKA_INSTANCE_HOSTNAME #替换jar包中application.yml文件中的属性
value: ${MY_POD_NAME}.eureka
podManagementPolicy: "Parallel"
4、执行yaml文件,查看节点信息
#执行yaml文件
[root@master03 eureka]# kubectl apply -f eureka.yaml
#查看所有节点
[root@master03 eureka]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master01 Ready master 4d2h v1.19.0
master02 Ready master 4d1h v1.19.0
master03 Ready master 4d1h v1.19.0
node01 Ready 24h v1.19.0
node02 Ready 24h v1.19.0
#查看pod状态
[root@master03 eureka]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
eureka-0 1/1 Running 0 41m 10.244.196.139 node01
eureka-1 1/1 Running 0 41m 10.244.140.75 node02
#浏览器访问 node节点的ip + nodeport的端口
[root@master03 eureka]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
eureka NodePort 10.107.104.213 10086:32229/TCP 3m54s
kubernetes ClusterIP 10.96.0.1 443/TCP 4d1h
#我的节点ip
#node01 192.168.1.165
#node02 192.168.1.166
5、浏览器访问
#执行yaml文件 [root@master03 eureka]# kubectl apply -f eureka.yaml #查看所有节点 [root@master03 eureka]# kubectl get nodes NAME STATUS ROLES AGE VERSION master01 Ready master 4d2h v1.19.0 master02 Ready master 4d1h v1.19.0 master03 Ready master 4d1h v1.19.0 node01 Ready24h v1.19.0 node02 Ready 24h v1.19.0 #查看pod状态 [root@master03 eureka]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES eureka-0 1/1 Running 0 41m 10.244.196.139 node01 eureka-1 1/1 Running 0 41m 10.244.140.75 node02 #浏览器访问 node节点的ip + nodeport的端口 [root@master03 eureka]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE eureka NodePort 10.107.104.213 10086:32229/TCP 3m54s kubernetes ClusterIP 10.96.0.1 443/TCP 4d1h #我的节点ip #node01 192.168.1.165 #node02 192.168.1.166
5、浏览器访问



