企业运维实战--k8s学习笔记5.Service之通过Ingress-nginx实现k8s七层负载均衡

企业运维实战--k8s学习笔记5.Service之通过Ingress-nginx实现k8s七层负载均衡


前言

上一篇学习笔记中,我们了解并应用了k8s的calico网络插件。本章将在其基础上通过Ingress-nginx实现k8s的七层负载均衡。相比较之前的四层负载均衡会多一些重定向、反向代理等功能。

Ingress-nginx七层负载均衡实现

Ingress是一个API对象,和其他对象一样,通过yaml文件来配置。ingress通过http或https暴露集群内部service,给service提供外部URL、负载均衡、SSL/TLS能力以及基于host的方向代理。

安装Ingress

镜像准备:

,harbor仓库中新建项目ingress-nginx,压入镜像到harbor仓库

在这里插入图片描述

docker tag reg.westos.org/ingress-nginx/controller:v0.48.1 hyl.westos.org/ingress-nginx/controller:v0.48.1
docker tag reg.westos.org/ingress-nginx/kube-webhook-certgen:v1.5.1 hyl.westos.org/ingress-nginx/kube-webhook-certgen:v1.5.1
docker push hyl.westos.org/ingress-nginx/controller:v0.48.1
docker push hyl.westos.org/ingress-nginx/kube-webhook-certgen:v1.5.1

在这里插入图片描述
进入仓库查看镜像是否上传成功
在这里插入图片描述
官网下载ingress-nginx部署所需资源清单,修改镜像get地址为本地harbor仓库。
在这里插入图片描述
拉起pod节点,kubectl apply -f deploy.yaml

在这里插入图片描述查看生成的namespace状态

kubectl get ns

在这里插入图片描述

查看ingress-nginx的所有信息,可以看到ingress-nginx-controller已经running

kubectl -n ingress-nginx get all

在这里插入图片描述
查看svc暴露端口

kubectl -n ingress-nginx get svc

在这里插入图片描述
访问测试:
在这里插入图片描述

配置ingress-nginx七层均衡

添加svc服务
vim svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysvc
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  selector:
    app: myapp

拉起服务并查看endpoint

在这里插入图片描述

修改svc配置文件为负载均衡
kubectl -n ingress-nginx edit svc ingress-nginx-controller
在这里插入图片描述
查看修改内容

kubectl -n ingress-nginx get svc

在这里插入图片描述
可以通过此方式动态分配IP,而不是占用主机资源
在这里插入图片描述
修改deployment标签,为重定向作准备,给定不同版本的镜像,方便看到反向代理的结果差异。之前标签myapp的版本是v1 这里是版本v2

vim deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: myapp:v2

拉起deployment,通过标签来锁定域名
在这里插入图片描述
为标签为nginx的deployment添加服务
vim nginx-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  selector:
    app: nginx

修改标签为myapp的svc名称,方便对比
重新拉起两个svc

kubectl apply -f nginx-svc.yaml
kubectl apply -f myapp-svc.yaml

查看svc信息
在这里插入图片描述
查看节点endpoint服务是否健康

kubectl describe svc myapp-svc
kubectl describe svc nginx-svc

在这里插入图片描述

配置服务与ingress连接,并给定域名
vim ingress.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-nginx
spec:
  rules:
  - host: www1.westos.org
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-svc
          servicePort: 80

---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-myapp
spec:
  rules:
  - host: www2.westos.org
    http:
      paths:
      - path: /
        backend:
          serviceName: myapp-svc
          servicePort: 80

拉起资源清单

kubectl apply -f ingress.yaml

在这里插入图片描述
查看ingress反向代理信息

kubectl get ingress

在这里插入图片描述
测试:
测试机添加解析到服务节点172.25.9.10
在这里插入图片描述
访问测试:

curl www1.westos.org
curl www2.westos.org

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值