一、service资源概述
每当我们企业的业务pod迭代功能的时候,都会修改pod,修改后重新启动pod,ip就会变化,那么在生产环境当中,从用户到宿主机、从宿主机到pod,这一个访问流程,都是事先写好的,一旦pod修改后,ip产生变化,就需要重新配置,因此,k8s提供了service资源用于解决这一问题;
二、service资源类型
创建一个工作目录
[root@k8s231 pod]# mkdir -pv /xinjizhiwa/service
[root@k8s231 pod]# cd /xinjizhiwa/service
1,service的cluster IP类型
· 编辑service资源清单
[root@k8s231 service]# cat 01-service-clusterip.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-01
spec:
#声明clusterip类型,不指定默认也是这个类型;
type: ClusterIP
#指定pod的标签
selector:
k8s: xinjizhiwa
#指定service的ip地址
clusterIP: 10.200.100.100
#用户访问service时,访问哪个端口?
ports:
#指定访问协议,若不指定协议,默认也是TCP
- protocol: TCP
#service的端口
port: 80
#pod的容器端口(目标端口)
targetPort: 80
· 编辑pod资源清单
[root@k8s231 service]# cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: p5
labels:
k8s: xinjizhiwa
spec:
containers:
- name: c1
image: nginx:1.20.1-alpine
ports:
- containerPort: 80
· 创建资源
[root@k8s231 service]# kubectl apply -f .
· 测试访问service和pod资源看是否都能访问到容器
2,service的nodeport类型
nodeport类型,就是clusterip类型的升级版,它可以使用宿主机的端口,映射到service开放的端口上,从而,使得用户访问宿主机,宿主机转发到service资源,进而访问到pod资源;
· 编辑service资源清单
[root@k8s231 service]# cat 01-service-clusterip.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-02
spec:
#声明nodePort类型;
type: NodePort
#指定pod的标签
selector:
k8s: xinjizhiwa
#指定service的ip地址(在nodeport类型中可以不设置,会随机生成)
clusterIP: 10.200.100.101
#用户访问service时,访问哪个端口?
ports:
#指定访问协议,若不指定协议,默认也是TCP
- protocol: TCP
#service的端口
port: 80
#pod的容器端口(目标端