我是靠谱客的博主 清脆招牌,这篇文章主要介绍k8s学习 - 网络,现在分享给大家,希望可以做个参考。

service & ingress

    • Pod & Service
    • Ingress Controller :
    • 案例:

Pod & Service

Pod与Service的关系:

  1. 通过lable-selector关联
  2. service实现pod的负载均衡(TCP/UDP )

Service 3种常用类型

  1. ClusterIP : 集群内部使用
  2. NodePort : 对外暴露应用
  3. LoadBalancer : 适用公有云,对外暴露应用
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

复制代码
1
2
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

案例:

  1. 先部署deployment,创建pod
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
  1. 对pod创建service
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
apiVersion: v1 kind: Service metadata: name: web namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 8080 selector: app: web type: NodePort
  1. 创建ingress绑定service
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
  1. 检查
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[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
  1. 测试
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[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学习内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部