-- 摘自海生哥哥
1. 打包项目为jar包
- 在集群master节点上执行命令,获取eurekaService注册中心的集群地址ClusterIP和集群端口port
- kubectl get svc
- ClusterIP:集群中[service]的IP
- port:集群中[service]的端口
- 拉取svn更新userService代码
- 更新userService模块内的boostrap.yml修改注册中心地址
- eureka.client.serviceUrl.defaultZone = http://[ClusterIP]:[port]/eureka/
- 例如:eureka.client.serviceUrl.defaultZone = http://10.106.159.181:8761/eureka/
- userService模块执行maven clean install生成jar包
2. 打包jar为docker镜像并上传到私有仓库,目前使用的私有仓库是docker官方的registry
- 上传jar到安装了docker的CentOS服务器上
- 在jar包旁边创建Dockerfile文件,注意该文件没有任何后缀
- 创建镜像,build命令中的最后一个点代表当前Dockerfile的路径
- registryIP:私有仓库registry的IP
- registryPort:私有仓库registry的端口
- imageName:镜像名称,可以使用斜杠区分目录,例如:myProject/userService
- tag:镜像的标签,docker私有仓库registry中同一个镜像的标签唯一
- docker build -t [registryIP][registryPort][imageName]:[tag] .
- 例如:docker build -t docker build -t 172.16.0.11:5000/springcloud/gatewayservice:v4 .
- 推送镜像到私有仓库registry
- docker push [registryIP][registryPort][imageName]:[tag]
- 例如:docker push 172.16.0.11:5000/springcloud/gatewayservice:v4
3. 在k8s的master节点执行更新
- 登录集群master节点
- 进入自定义存放userServiceDeployment.yaml文件的路径
- cd /usr/local/zixinhui/my_deployment
- 修改userServiceDeployment.yaml文件中docker镜像的标签[tag],例如一下属性中的v4
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-userservice
namespace: default # 命名空间,不同命名空间相互隔离
spec:
replicas: 1 # 部署userService服务的个数
selector:
matchLabels:
name: deployment-userservice # pod名称
template:
metadata:
labels:
name: deployment-userservice # pod名称
spec:
containers:
- name: userservice # 镜像名称
image: 172.16.0.11:5000/springcloud/userservice:v4 # 我们打包的镜像,打包为v4就写v4,打包成v5就写v5
imagePullPolicy: Always # 容器拉取规则,Always表示每次都从docker私有仓库registry拉取镜像部署
ports:
- containerPort: 8766
env: # 设置容器内环境变量,以下效果为设置容器时间为上海标准时间
- name: TZ
value: Asia/Shanghai
---
apiVersion: v1
kind: Service
metadata:
name: userservice-service
spec:
type: ClusterIP # 集群IP类型:NodePort、ClusterIP、None
selector:
name: deployment-userservice
ports:
- protocol: TCP
port: 8766 # 集群service端口
targetPort: 8766 # docker容器端口
- 保存修改之后,执行更新命令
- kubectl apply -f userService.yaml
4. 在k8s中master节点查看日志、服务等命令
- 查看日志,加-f参数效果类似tail -f output.log
- kubectl logs -f [podName]
- podName:通过命令kubectl get pods查询出来的NAME字段
- 进入pod内部:
- kubectl exec -it [podName] -- /bin/sh
- pod内部可以包含多个容器,pod是k8s最小执行单位
- 按照范围划分:service > pod > container > jar