在上一节讲解了k8s 的pod,deployment,以及借助pod,deployment来部署项目,但会存在问题:
- 每次只能访问一个 pod,没有负载均衡自动转发到不同 pod
- 访问还需要端口转发
- Pod重创后IP变了,名字也变了
针对上面的问题,可以借助Service来解决,下面就来看看Service怎么使用
Service是通过label关联对应的Pod,下面就来创建Service,首先创建一个deployment.yaml,然后创建service.yaml,通过service.yaml的label标签 goweb 跟对应的deployment.yam中的Pod 关联上
apiVersion: apps/v1
#类型deploymnt
kind: Deployment
metadata:
#部署的名字
name: goweb
spec:
#创建Pod的副本数
replicas: 2
#定义标签选择器:定义Deployment如何找到要管理的Pod,与template的label(标签)对应
selector:
matchLabels:
app: goweb #需要和下面的labels统一
#定义 Pod 相关数据
template:
metadata:
labels:
app: goweb
#指定该资源的内容
spec:
# 定义容器,可以多个
containers:
- name: test-goweb# 容器名字
image: k8sgoimg # 镜像
# [Always | Never | IfNotPresent] #获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像
imagePullPolicy: IfNotPresent
创建 一个Service,新建service.yaml通过标签goweb跟对应的Pod关联上