Service资源介绍
Pod的生命周期非常短暂,每次镜像升级都会销毁以及创建,而我们知道每个Pod都拥有自己的IP地址,并且随着Pod删除和创建,这个IP是会变化的。当我们的Pod数量非常多的时候,前端的入口服务该怎么知道后面都有哪些Pod呢?为了解决这个问题k8s提供了一个对象Service和三种IP,创建的Service资源通过标签可以动态的知道后端的Pod的IP地址,在PodIP之上设计一个固定的IP,也就是ClusterIP,然后使用NodePort来对外暴露端口提供访问。
svc的特性
1)无需关注IP地址,重新拉起POD会自动更新
2)可以使用service的名字进行通信
因为kube-proxy的存在,启动一个svc,所有机器的ip都能访问
Ingress安装
# 1.拉取镜像
[root@node-1 ~]# docker pull nginx/nginx-ingress:1.7.2
[root@node-2 ~]# docker pull nginx/nginx-ingress:1.7.2
#2.下载资源清单
https://github.com/kubeguide/K8sDefinitiveGuide-V5-Sourcecode/blob/main/Chapter04/4.6.1%20nginx-ingress-controller.yaml
# 修改内容
1)将Deployment修改为DaemonSet
2)删除replicas: 1
3)删除node标签选择器
nodeSelector:
role: ingress-nginx-controller
4)删除末尾的mywebsite部分(ingress模版)
[root@master-1 ~]# kubectl apply -f nginx-ingress-controller.yaml
# 查看ingress pod
[root@master-1 ~]# kubectl get pod -n nginx-ingress -o wide
# mywebsite-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: wp-ingress
naemspace: blog
spec:
rules:
- host: www.mywp.com
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: wp-svc
port:
number: 80
## pathType
ImplementationSpecific 系统默认,由IngressClass控制器提供
Exact 精确匹配URL路径,区分大小写
Prefix 匹配URL路径的前缀,区分大小写