(二)Kubernetes部署SpringCloud微服务
k8s部署SpringCloud微服务项目1、创建命名空间kubectl create namespace iids<空间名称>2、创建私有镜像密钥Secretkubectl create secret docker-registry <Secret名称> \--docker-server=<harbor地址> \--docker-username=<账号
·
k8s部署SpringCloud微服务项目
1、创建命名空间
kubectl create namespace iids<空间名称>
2、创建私有镜像密钥Secret
kubectl create secret docker-registry <Secret名称> \
--docker-server=<harbor地址> \
--docker-username=<账号> \
--docker-password=<密码> \
--docker-email=<随意邮箱>
3、部署springcloud微服务项目
(1) 部署方式选择
- 微服务项目根据微服务类型分为两种部署,两种网络暴露。
-
有状态服务,如eureka、job、数据库等中间件,使用StatefulSet控制器部署,其它无状态微服务使用Deployment控制器部署。
-
k8s内部访问微服务,service使用ClusterIP类型对内部进行暴露;外部访问微服务,service使用NodePort对外进行暴露。
(2) 部署有状态服务
- 以eureka服务为例
- 修改eureka服务配置文件
server:
port: 10000
spring:
application:
name: iids-msa-eureka
eureka:
server:
#关闭自我保护
enable-self-preservation: false
use-read-only-response-cache: false
#设置自动清理时间
eviction-interval-timer-in-ms: 5000
client:
registry-fetch-interval-seconds: 5
#注册中心职责是维护服务实例,false:不检索服务。
fetch-registry: true
#此应用为注册中心,false:不向注册中心注册自己。
register-with-eureka: true
service-url:
defaultZone: ${EUREKA_SERVER:http://127.0.0.1:${server.port}/eureka/}
instance:
hostname: ${EUREKA_INSTANCE_HOSTNAME:${spring.application.name}}
lease-renewal-interval-in-seconds: 5
lease-expiration-duration-in-seconds: 10
instance-id: ${EUREKA_INSTANCE_HOSTNAME:${spring.application.name}}:${server.port}@${random.l ong(1000000,9999999)}
- 编译StatefulSet、service等iids-eureka.yml
#service
---
apiVersion: v1
kind: Service
metadata:
namespace: iids
name: iids-eureka
labels:
app: iids-eureka
spec:
type: NodePort
ports:
- port: 10000
name: iids-eureka
targetPort: 10000
selector:
app: iids-eureka
---
#StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: iids
name: iids-eureka
spec:
serviceName: "iids-eureka"
replicas: 2
selector:
matchLabels:
app: iids-eureka
template:
metadata:
labels:
app: iids-eureka
spec:
imagePullSecrets:
- name: harbor_secret #对应创建私有镜像密钥Secret
containers:
- name: iids-msa-eureka
image: harbor地址:25100/iids/iids-msa-eureka:1.0.0
ports:
- containerPort: 10000
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: EUREKA_SERVER
value: "http://iids-eureka-0.iids-eureka.iids:10000/eureka/,http://iids-eureka-1.iids-eureka.iids:10000/eureka/"
- name: EUREKA_INSTANCE_HOSTNAME
value: ${MY_POD_NAME}.iids-eureka.iids
- name: ACTIVE
value: "-Dspring.profiles.active=k8s"
podManagementPolicy: "Parallel"
- 执行命令
kubectl apply -f iids-eureka.yml
(3) 部署内部访问服务
-
修改微服务配置文件
eureka: client: #客户端注册进eureka服务列表内 service-url: defaultZone: ${EUREKA_SERVER}
-
编译Deployment、service等iids-flat-config.yml
#service --- apiVersion: v1 kind: Service metadata: namespace: iids name: iids-flat-config labels: app: iids-flat-config spec: type: ClusterIP ports: - port: 30400 name: iids-flat-config targetPort: 30400 selector: app: iids-flat-config --- #Deployment apiVersion: apps/v1 kind: Deployment metadata: namespace: iids name: iids-flat-config spec: replicas: 2 selector: matchLabels: app: iids-flat-config template: metadata: labels: app: iids-flat-config spec: imagePullSecrets: - name: harbor_secret containers: - name: iids-flat-config image: harbor地址:25100/iids/iids-flat-config:1.0.0 #拉取镜像策略 #Always 总是拉取镜像 #IfNotPresent 本地有则使用本地镜像,不拉取 #Never 只使用本地镜像,从不拉取,即使本地没有 #如果省略imagePullPolicy 策略为IfNotPresent imagePullPolicy: Always ports: - containerPort: 30100 env: - name: EUREKA_SERVER value: "http://iids-eureka-0.iids-eureka.iids:10000/eureka/,http://iids-eureka-1.iids-eureka.iids:10000/eureka/" - name: ACTIVE value: "-Dspring.profiles.active=k8s"
(4) 部署外部访问服务
-
修改微服务配置文件
eureka: client: #客户端注册进eureka服务列表内 service-url: defaultZone: ${EUREKA_SERVER}
-
编译Deployment、service等iids-msa-flat-zuul.yml
#service --- apiVersion: v1 kind: Service metadata: namespace: iids name: iids-msa-flat-zuul labels: app: iids-msa-flat-zuul spec: type: NodePort ports: - port: 10100 name: iids-msa-flat-zuul targetPort: 10100 selector: app: iids-msa-flat-zuul --- #Deployment apiVersion: apps/v1 kind: Deployment metadata: namespace: iids name: iids-msa-flat-zuul spec: replicas: 2 selector: matchLabels: app: iids-msa-flat-zuul template: metadata: labels: app: iids-msa-flat-zuul spec: imagePullSecrets: - name: harbor_secret containers: - name: iids-flat-config image: harbor地址:25100/iids/iids-msa-flat-zuul:1.0.0 imagePullPolicy: Always ports: - containerPort: 30100 env: - name: EUREKA_SERVER value: "http://iids-eureka-0.iids-eureka.iids:10000/eureka/,http://iids-eureka-1.iids-eureka.iids:10000/eureka/" - name: ACTIVE value: "-Dspring.profiles.active=k8s"
(5) 注意事项
1. 镜像拉取策略
containers:
- name: iids-flat-config
image: harbor地址:25100/iids/iids-flat-config:1.0.0
imagePullPolicy: Always
#拉取镜像策略
#Always 总是拉取镜像
#IfNotPresent 本地有则使用本地镜像,不拉取
#Never 只使用本地镜像,从不拉取,即使本地没有
#如果省略imagePullPolicy 策略为IfNotPresent
2. Kubernetes 调整 nodePort 端口范围,修改默认30000-32767端口范围
#编辑k8s配置文件
vim /etc/kubernetes/manifests/kube-apiserver.yaml
#添加 - --service-node-port-range=1-65535
spec:
containers:
- command:
- kube-apiserver
- --service-node-port-range=1-65535 #只需添加到本行即可
- --advertise-address=192.168.0.13
- --allow-privileged=true
- --authorization-mode=Node,RBAC
- --client-ca-file=/etc/kubernetes/pki/ca.crt
更多推荐
已为社区贡献3条内容
所有评论(0)