接上篇文章minikube(k8s)部署spring boot项目(一)
上篇文章讲解了k8s部署spring boot demo项目的一部分,本文主要讲解如何将服务暴露指定的端口给外部调用。
apiVersion: apps/v1 #kubectl api-versions 可以通过这条指令去看版本信息
kind: Deployment # 指定资源类别
metadata: #资源的一些元数据
name: k8s-boot-app-deployment #deloyment的名称
labels:
app: k8s-boot-app #标签
spec:
replicas: 3 #创建pod的个数
selector:
matchLabels:
app: k8s-boot-app #满足标签为这个的时候相关的pod才能被调度到
template:
metadata:
labels:
app: k8s-boot-app
spec:
containers:
- name: k8s-boot-app
image: k8s-boot-app:1.0
imagePullPolicy: IfNotPresent #当本地有镜像的时候优先选用本地,没有才选择网络拉取
ports:
- containerPort: 8080 #开放8080
在上面的配置文件中添加service配置
#暴露服务给客户端
apiVersion: v1
kind: Service
metadata:
name: k8s-boot-app-service
namespace: default
spec:
# 服务类型
#ClusterIp 默认是集群内部容器访问地址,会生成一个虚拟IP 与pod不在一个网段
#NodePort 会在宿主机上映射一个端口,供外部应用访问模式,就是开放端口给外部访问服务
#LoadBalancer 使用负载均衡,三者的功能是叠加的,如loadBalancer=clusterIp+NodePort+负载均衡
type: NodePort
ports:
- port: 8080 #对应deployment的容器端口
protocol: TCP
nodePort: 31000 #外部端口
selector:
app: k8s-boot-app #对应deployment的spec.selector.app-> 注意app这个key也要对应
---
apiVersion: apps/v1 #kubectl api-versions 可以通过这条指令去看版本信息
kind: Deployment # 指定资源类别
metadata: #资源的一些元数据
name: k8s-boot-app-deployment #deloyment的名称
labels:
app: k8s-boot-app #标签
spec:
replicas: 3 #创建pod的个数
selector:
matchLabels:
app: k8s-boot-app #满足标签为这个的时候相关的pod才能被调度到
template:
metadata:
labels:
app: k8s-boot-app
spec:
containers:
- name: k8s-boot-app
image: k8s-boot-app:1.0
imagePullPolicy: IfNotPresent #当本地有镜像的时候优先选用本地,没有才选择网络拉取
ports:
- containerPort: 8080 #容器端口开放8080
添加完成后再次部署,通过命令删除之前的服务
sudo kubectl delete -f ./k8s-boot-app-deployment.yml
创建
sudo kubectl apply -f ./k8s-boot-app-deployment.yml
查看控制面板可以看到service信息
使用指定的端口访问:
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/243937.html