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

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
在Kubernetes中,Ingress是一个API对象,用于管理对集群内服务的外部访问,通常针对HTTP和HTTPS流量。Ingress允许您定义路由流量的规则,无需创建大量的LoadBalancer或将每个服务暴露在节点上。
以下是Ingress工作的概述和涉及的关键组件:
Ingress资源包含了一套规则,这些规则定义了流量应如何路由到Kubernetes集群内的服务。这些规则在Ingress的YAML定义文件中指定。
Ingress控制器负责实现Ingress资源中定义的规则。它充当反向代理和流量入口点,根据请求将流量路由到适当的后端服务。常见的Ingress控制器包括Nginx、Traefik、HAProxy,以及特定于云提供商的控制器,如GKE的Ingress、AWS ALB Ingress控制器和Azure的Application Gateway Ingress控制器。
以下是Kubernetes Ingress资源的一个简单示例YAML定义:
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。
默认kubeadm的创建的集群是没有Ingress控制器的,要在Kubernetes集群中安装Ingress控制器,你需要根据你选择的Ingress控制器类型和你的环境执行一系列步骤。以安装最常见的Nginx Ingress控制器为例:
如果你安装最新版本的集群,那么直接按照下面的安装是没问题的,如果你安装的历史版本,需要考虑下兼容性问题,比如我们这里的1.23.12则只能使用v1.6.4,当然我们这里作为理解ingress是没有问题的。
如果你在集群中使用了Helm,这是一种流行的Kubernetes包管理工具,你可以使用它来安装Nginx Ingress控制器。
首先,添加Nginx Ingress控制器的Helm仓库:
然后,安装Nginx Ingress控制器:
helm install nginx-ingress \
ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--create-namespace你可以通过添加更多的自定义值来定制安装,例如在上面的命令中使用--set参数或者使用-f参数指定一个值文件。
如果你没有使用Helm,你也可以直接用Kubernetes清单来安装Nginx Ingress控制器,下面的地址就是配合1.23.12版本。
#这个地址可能需要做hosts才能访问。
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.6.4/deploy/static/provider/cloud/deploy.yamlvi 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基础-包括文件的增删改查,磁盘管理,网络配置,用户配置,权限配置 |
|---|