前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11.服务负载-使用和管理Ingress

11.服务负载-使用和管理Ingress

作者头像
AI码师
发布2024-04-26 11:09:59
2060
发布2024-04-26 11:09:59
举报

Kubernetes Ingress(K8s Ingress)是一种用于管理和公开Kubernetes集群中服务的API对象。它允许外部流量进入集群,并提供路由规则来决定如何将该流量路由到不同的服务.

基础概念

Ingress Controller:Ingress并不直接处理请求,而是通过Ingress Controller实现。Ingress Controller是一个运行在Kubernetes集群中的服务,它负责监视新的Ingress对象的创建和更新,并根据定义的规则配置负载均衡器(通常是反向代理)。常见的Ingress Controllers包括Nginx Ingress Controller、Traefik、HAProxy Ingress等。k8s目前支持和维护 AWSGCENginx Ingress 控制器。

Ingress Resource:Ingress资源是定义路由规则的Kubernetes对象。它包含了定义请求如何路由的规则,包括主机名、路径、后端服务等。

基本使用

所有示例基于Nginx Ingress Controller,所以需要先部署Nginx Ingress Controller

代码语言:javascript
复制
# 下载 ingress-nginx.yaml,这个需要连接github,不过我在资料包中已经为大家准备好了。
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml

# 修改镜像为国内地址
image: k8s.gcr.io/ingress-nginx/controller:v1.2.0@sha256:d8196e3bc1e72547c5dec66d6556c0ff92a23f6d0919b206be170bc90d5f9185

替换成

image: docker.io/dyrnq/controller:v1.2.0@sha256:d8196e3bc1e72547c5dec66d6556c0ff92a23f6d0919b206be170bc90d5f9185

image: k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660

替换成

image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660

# 修改serviceType
LoadBalancer -> NodePort

# 修改hostNetwork 使用主机网络 kind为 DaemonSet
apiVersion: apps/v1
# kind: Deployment
kind: DaemonSet
metadata:
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  template:
    spec:
      hostNetwork: true
# 安装ingress-nginx-controller
kubectl apply -f ingress-nginx.yaml

安装在了node1,node2节点中,并且使用主机网络IP,监听80和43端口

访问后,出现了nginx,代表安装成功

定义ingress

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-simple
  annotations:
    kubernetes.io/ingress.class: "nginx"
    #nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: "ingress.lglbc.cn"
    http:
      paths:
      - pathType: Prefix
        path: "/api"
        backend:
          service:
            name: clusterip-service
            port:
              number: 80

多域名访问

需要现在容器内容创建两个文件夹

代码语言:javascript
复制
mkdir /usr/share/nginx/html/api2
mkdir /usr/share/nginx/html/api

echo hello > /usr/share/nginx/html/api/index.html
echo hello ingress2 > /usr/share/nginx/html/api2/index.html
代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-more-host
  annotations:
    kubernetes.io/ingress.class: "nginx"
    #nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: "ingress3.lglbc.cn"
    http:
      paths:
      - pathType: Prefix
        path: "/api"
        backend:
          service:
            name: clusterip-service
            port:
              number: 80

  - host: "ingress2.lglbc.cn"
    http:
      paths:
      - pathType: Prefix
        path: "/api2"
        backend:
          service:
            name: clusterip-service
            port:
              number: 80
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哥聊编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础概念
  • 基本使用
    • 定义ingress
      • 多域名访问
      相关产品与服务
      负载均衡
      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档