1.4.3 注册中心服务部署到k8s¶
1、定义StatefulSet类型的yaml文件
# 创建ns
[root@k8s-master01 ~]# k create ns demo
[root@k8s-master01 ~]# mkdir springcloud
# 定义yaml文件
[root@k8s-master01 ~]# cd springcloud
[root@k8s-master01 springcloud]# vim demo-eureka-sts.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: demo-eureka
namespace: demo
labels:
app: demo-eureka
spec:
replicas: 3
selector:
matchLabels:
app: demo-eureka
serviceName: demo-eureka # 必须关联 Headless Service
podManagementPolicy: Parallel
template:
metadata:
labels:
app: demo-eureka
spec:
containers:
- name: eureka
image: registry.cn-hangzhou.aliyuncs.com/abroad_images/demo-eureka:v0.0.1
ports:
- name: http-web
containerPort: 8761
protocol: TCP
env:
- name: SPRING_PROFILES_ACTIVE
value: "k8s"
- name: SERVER_PORT
value: "8761"
- name: EUREKA_SERVER_ADDRESS
value: "http://demo-eureka-0.demo-eureka:8761/eureka/,http://demo-eureka-1.demo-eureka:8761/eureka/,http://demo-eureka-2.demo-eureka:8761/eureka/"
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: "100m"
memory: "128Mi"
imagePullPolicy: IfNotPresent
readinessProbe:
tcpSocket:
port: 8761
initialDelaySeconds: 10
timeoutSeconds: 2
periodSeconds: 5
livenessProbe:
tcpSocket:
port: 8761
initialDelaySeconds: 10
timeoutSeconds: 2
periodSeconds: 5
restartPolicy: Always
2、定义Service类型的yaml文件
# 创建无头服务,用于给eureka节点添加标识
[root@k8s-master01 ~]# cd springcloud
[root@k8s-master01 springcloud]# vim demo-eureka-sts-headless-svc.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: demo-eureka
name: demo-eureka
namespace: demo
spec:
clusterIP: None
sessionAffinity: None
type: ClusterIP
ports:
- name: http-web
port: 8761
targetPort: 8761
protocol: TCP
selector:
app: demo-eureka
[root@k8s-master01 ~]# cd springcloud
[root@k8s-master01 springcloud]# vim demo-eureka-sts-nodeport-svc.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: eureka
name: eureka
namespace: demo
spec:
sessionAffinity: None
type: NodePort
ports:
- name: http-web
port: 8761
targetPort: 8761
protocol: TCP
selector:
app: demo-eureka
3、创建eureka及相关服务
[root@k8s-master01 springcloud]# k apply -f demo-eureka-sts.yaml -f demo-eureka-sts-headless-svc.yaml -f demo-eureka-sts-nodeport-svc.yaml
# 验证pod
[root@k8s-master01 springcloud]# kgp -n demo
NAME READY STATUS RESTARTS AGE
demo-eureka-0 1/1 Running 0 96s
demo-eureka-1 1/1 Running 0 96s
demo-eureka-2 1/1 Running 0 96s
# 验证服务
[root@k8s-master01 springcloud]# kg svc -n demo
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demo-eureka ClusterIP None <none> 8761/TCP 2m
eureka NodePort 10.99.172.139 <none> 8761:30590/TCP 2m
4、使用任意节点ip:30590进行访问,这里使用http://10.0.0.20:30590/测试服务,观察到服务正常
