springboot项目部署到k8s上

springboot部署到k8s步骤

  1. springboot项目打包镜像部署到镜像仓库

  2. 登录私有镜像仓库,拉去镜像

  3. 创建deployment

  4. 暴露服务访问端口

上篇文章已讲过 springboot构建docker镜像并推送到阿里云

创建secret

登录私有仓库需要创建secret,存储docker registry的认证信息

创建secret

~$ kubectl create secret docker-registry fdf-docker-secret --docker-server=registry.cn-chengdu.aliyuncs.com --docker-username=17602117026 --docker-password=用户密码
secret/fdf-docker-secret created
~$
~$
~$ kubectl get secret
NAME TYPE DATA AGE
fdf-docker-secret kubernetes.io/dockerconfigjson 1 15s

创建好之后,后续需要挂载到pod上

创建deployment的yaml文件

快速创建一个deployment,导出yaml文件

~$ kubectl create deployment k8sdemo --image=registry.cn-chengdu.aliyuncs.com/fandf/k8s-test:1.0.0 --dry-run=client -o yaml > k8sdemo.yaml
~$ cat k8sdemo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: k8sdemo
name: k8sdemo
spec:
replicas: 1
selector:
matchLabels:
app: k8sdemo
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: k8sdemo
spec:
containers:
- image: registry.cn-chengdu.aliyuncs.com/fandf/k8s-test:1.0.0
name: k8s-test
resources: {}
status: {}
~$

修改k8sdemo.yaml文件

#1.修改副本数量为2
#2.挂在secret

apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: k8sdemo
name: k8sdemo
spec:
replicas: 2
selector:
matchLabels:
app: k8sdemo
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: k8sdemo
spec:
imagePullSecrets:
- name: fdf-docker-secret
containers:
- image: registry.cn-chengdu.aliyuncs.com/fandf/k8s-test:1.0.0
name: k8s-test
resources: {}
status: {}

创建deployment

~$ kubectl apply -f k8sdemo.yaml
deployment.apps/k8sdemo created
~$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
k8sdemo 0/2 2 0 12s
~$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
k8sdemo 2/2 2 2 24s
~$ kubectl get pod
NAME READY STATUS RESTARTS AGE
k8sdemo-65d45fb49f-l4kx5 1/1 Running 0 28s
k8sdemo-65d45fb49f-pqsjw 1/1 Running 0 28s

创建service, nodePort

#port 服务端口 target-port pod端口

~$ kubectl expose deploy k8sdemo --port=9001 --target-port=9001 --type=NodePort
service/k8sdemo exposed
~$
~$ kubectl get svc k8sdemo
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
k8sdemo NodePort 10.96.10.79 <none> 9001:31921/TCP 12s
~$ curl http://127.0.0.1:31921/api/v1/user/name
zhangsan

可以看到serviced的ip为10.96.10.79  对外端口为 31921,安全组需开放该端口才能访问

到这里我们服务部署就算完成了,看一下所有的节点

~$ kubectl get secret,pod,svc,deploy
NAME TYPE DATA AGE
secret/fdf-docker-secret kubernetes.io/dockerconfigjson 1 52m

NAME READY STATUS RESTARTS AGE
pod/k8sdemo-65d45fb49f-l4kx5 1/1 Running 0 39m
pod/k8sdemo-65d45fb49f-pqsjw 1/1 Running 0 39m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/k8sdemo NodePort 10.96.10.79 <none> 9001:31921/TCP 5m51s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 301d

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/k8sdemo 2/2 2 2 39m
~$


原文始发于微信公众号(好好学技术):springboot项目部署到k8s上

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/219538.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!