首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Kubernetes(k8s)-Ingress介绍&安装

Kubernetes(k8s)-Ingress介绍&安装

作者头像
运维小路
发布2025-01-15 21:48:04
发布2025-01-15 21:48:04
6240
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们在上几个小节介绍了Helm,本来打算通过Helm安装一个实际运维当中几乎是必备的应用Ingress,但是没有安装成功,所以这里的安装是直接下载的资源文件直接通过kubectl命令部署到Kubernetes集群。

基本介绍

在Kubernetes中,Ingress是一个API对象,用于管理对集群内服务的外部访问,通常针对HTTP和HTTPS流量。Ingress允许您定义路由流量的规则,无需创建大量的LoadBalancer或将每个服务暴露在节点上。

以下是Ingress工作的概述和涉及的关键组件:

Ingress资源

Ingress资源包含了一套规则,这些规则定义了流量应如何路由到Kubernetes集群内的服务。这些规则在Ingress的YAML定义文件中指定。

Ingress控制器

Ingress控制器负责实现Ingress资源中定义的规则。它充当反向代理和流量入口点,根据请求将流量路由到适当的后端服务。常见的Ingress控制器包括Nginx、Traefik、HAProxy,以及特定于云提供商的控制器,如GKE的Ingress、AWS ALB Ingress控制器和Azure的Application Gateway Ingress控制器。

以下是Kubernetes Ingress资源的一个简单示例YAML定义:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /myapp
            pathType: Prefix
            backend:
              service:
                name: myapp-service
                port:
                  number: 80

在上面的例子中,所有发送到myapp.example.com/myapp的流量都将被路由到名为myapp-service的Kubernetes服务,该服务的端口为80。

安装Ingress

默认kubeadm的创建的集群是没有Ingress控制器的,要在Kubernetes集群中安装Ingress控制器,你需要根据你选择的Ingress控制器类型和你的环境执行一系列步骤。以安装最常见的Nginx Ingress控制器为例:

如果你安装最新版本的集群,那么直接按照下面的安装是没问题的,如果你安装的历史版本,需要考虑下兼容性问题,比如我们这里的1.23.12则只能使用v1.6.4,当然我们这里作为理解ingress是没有问题的。

安装Nginx Ingress控制器

使用Helm安装

如果你在集群中使用了Helm,这是一种流行的Kubernetes包管理工具,你可以使用它来安装Nginx Ingress控制器。

首先,添加Nginx Ingress控制器的Helm仓库:

然后,安装Nginx Ingress控制器:

代码语言:javascript
复制
helm install nginx-ingress \
  ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --create-namespace

你可以通过添加更多的自定义值来定制安装,例如在上面的命令中使用--set参数或者使用-f参数指定一个值文件。

使用Kubernetes清单安装

如果你没有使用Helm,你也可以直接用Kubernetes清单来安装Nginx Ingress控制器,下面的地址就是配合1.23.12版本。

代码语言:javascript
复制
#这个地址可能需要做hosts才能访问。
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.6.4/deploy/static/provider/cloud/deploy.yaml
代码语言:javascript
复制
vi deploy.yaml 
#删除镜像的SHA256校验和
#也就是镜像tag后面的所有信息
#因为我们的镜像是通过修改tag得到的,这个值无法修改,只能删除

#这个镜像不确定能否一直可用
docker pull m.daocloud.io/registry.k8s.io/ingress-nginx/controller:v1.6.3
docker pull m.daocloud.io/registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20220916-gd32f8c343

#修改tag
docker tag m.daocloud.io/registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20220916-gd32f8c343 registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20220916-gd32f8c343
docker tag m.daocloud.io/registry.k8s.io/ingress-nginx/controller:v1.6.3 registry.k8s.io/ingress-nginx/controller:v1.6.3

#写入k8s
kubectl  apply -f deploy.yaml

这样我们的ingress就算安装完成,但是这个只配置了一个pod,真实的生产环境都是多副本的。

自定义安装

对于特定的需求和高级配置,你可能需要创建自定义的Ingress控制器部署配置。这通常涉及编辑YAML文件以指定资源限制、安全性参数、网络策略等。

注意

以上步骤适用于安装Nginx Ingress控制器,但其他类型的Ingress控制器(如Traefik、HAProxy等)将会有它们自己的安装步骤。确保参考你选择的Ingress控制器的官方文档以获取正确的安装说明。此外,在云平台上,通常有平台特定的Ingress控制器选项,它们可能会更加集成到该平台的服务中。

历史推荐内容Docker-docker基本信息,基本命令,dockerfile,原理,仓库,存储网络日志,番外篇云计算&虚拟化-包括服务器购买,虚拟化介绍,虚拟磁盘,虚拟网络,创建虚拟机,安装虚拟机,dashboard,xml解释,克隆,快照,初始化,esxi介绍。Linux进阶-包括硬件,日常运维,基础软件,日志,进阶命令,防火墙,shell编程,内核,linux系统及初始化Linux基础-包括文件的增删改查,磁盘管理,网络配置,用户配置,权限配置

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们在上几个小节介绍了Helm,本来打算通过Helm安装一个实际运维当中几乎是必备的应用Ingress,但是没有安装成功,所以这里的安装是直接下载的资源文件直接通过kubectl命令部署到Kubernetes集群。
  • 基本介绍
    • Ingress资源
    • Ingress控制器
  • 安装Ingress
    • 安装Nginx Ingress控制器
      • 使用Helm安装
      • 使用Kubernetes清单安装
      • 自定义安装
    • 注意
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档