Pod & ServiceIngress Controller :案例:
Pod & ServicePod与Service的关系:
- 通过lable-selector关联service实现pod的负载均衡(TCP/UDP )
Service 3种常用类型
- ClusterIP : 集群内部使用NodePort : 对外暴露应用LoadBalancer : 适用公有云,对外暴露应用
apiVersion: v1
kind: Service
metadata:
labels:
app: web
name: web
spec:
type: ClusterIP
ports:
- port: 8080
protocol: TCP
targetPort: 80
selector:
app: web
Ingress Controller :
项目地址:https://github.com/kubernetes/ingress-nginx
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/cloud/deploy.yaml
修改如下部分
Ingress Contronler怎么工作的?
Ingress Contronler通过与Kubernetes API 交互,动态的去感知集群中Ingress 规则变化,然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段Nginx 配置,应用到管理的Nginx服务,然后热加载生效。
以此来达到Nginx负载均衡器配置及动态更新的问题。
流程包流程:客户端->Ingress Controller(nginx)-> 分布在各节点Pod
案例:- 先部署deployment,创建pod
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- image: nginx:1.17
name: nginx
- 对pod创建service
apiVersion: v1
kind: Service
metadata:
name: web
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: web
type: NodePort
- 创建ingress绑定service
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alinagedu
spec:
rules:
- host: web.aliangedu.cn
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80
- 检查
[root@master yaml]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES web-6bc4dfc596-94xdj 1/1 Running 0 43h 10.244.104.52 node2web-6bc4dfc596-mgdjw 1/1 Running 0 43h 10.244.166.153 node1 [root@master yaml]# kubectl get svc,ep NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 443/TCP 3d23h service/web ClusterIP 10.104.105.213 80/TCP 43h NAME ENDPOINTS AGE endpoints/kubernetes 172.16.10.60:6443 3d23h endpoints/web 10.244.104.52:80,10.244.166.153:80 43h [root@master yaml]# kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS AGE alinagedu web.aliangedu.cn 80 42h
- 测试
[root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.10.110 csdharbor.com 172.16.10.62 web.aliangedu.cn [root@localhost ~]# curl web.aliangedu.cn myapp-v2 [root@localhost ~]# curl web.aliangedu.cn myapp-v2 [root@localhost ~]# curl web.aliangedu.cn myapp-v1 [root@localhost ~]# curl web.aliangedu.cn myapp-v2



