概述
service & ingress
- Pod & Service
- Ingress Controller :
- 案例:
Pod & Service
Pod与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 node2 <none> <none>
web-6bc4dfc596-mgdjw 1/1 Running 0 43h 10.244.166.153 node1 <none> <none>
[root@master yaml]# kubectl get svc,ep
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d23h
service/web ClusterIP 10.104.105.213 <none> 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 <none> 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
最后
以上就是清脆招牌为你收集整理的k8s学习 - 网络的全部内容,希望文章能够帮你解决k8s学习 - 网络所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复