k8s v1.22.17怎么搭建ingress
时间: 2025-07-13 07:37:39 浏览: 5
<think>好的,用户想在Kubernetes v1.22.17上搭建Ingress,我需要整理相关的步骤和配置示例。首先,我得确认Kubernetes版本对应的Ingress控制器版本是否兼容。v1.22属于较新的版本,可能需要使用Ingress-NGINX的较新版本。
接下来,步骤大概分为几个部分:安装Ingress控制器、配置Ingress资源、验证安装。根据引用内容,用户提到了mkdir /opt/ingress,可能涉及到部署文件的下载,所以需要指导用户获取正确的YAML文件。例如,使用kubectl apply命令应用官方的部署清单。
然后,配置Ingress规则的部分需要引用用户提到的引用[2],说明如何定义主机名、路径和后端服务。这里要给出一个具体的YAML示例,比如定义一个访问example.com的规则,指向后端的Service。
另外,用户提供的引用[3]和[4]提到了IngressClass的配置,需要注意在Kubernetes v1.22中,IngressClass已经变为集群资源,可能需要单独创建。还要注意是否要处理没有指定IngressClass的情况,可能需要调整控制器的启动参数。
验证部分,用户引用[5]展示了使用curl测试的方法,但返回了404,可能需要检查后端服务是否正确部署,或者Ingress规则是否正确指向了存在的Service。在示例中应该确保Service和Deployment已经正确配置,避免出现404错误。
还要考虑是否需要配置hosts文件或者DNS解析,使得域名能够解析到集群的Node IP,并确保Ingress控制器暴露了正确的端口,比如NodePort或LoadBalancer类型。
最后,生成相关问题时要覆盖常见问题,比如HTTPS配置、性能优化、高可用部署等,帮助用户进一步了解Ingress的高级用法。</think>### Kubernetes v1.22.17 搭建 Ingress 的方法及配置示例
#### 一、部署 Ingress Controller
1. **选择控制器版本**
Kubernetes v1.22.17 需使用兼容的 Ingress-NGINX 控制器版本,推荐使用 `ingress-nginx v1.4.0` 或更高版本。
2. **下载部署文件**
执行以下命令获取官方部署清单:
```bash
mkdir /opt/ingress
cd /opt/ingress
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/baremetal/deploy.yaml
```
3. **修改配置(可选)**
- 若需监控未指定 `ingressClass` 的 Ingress 对象,在 Deployment 中添加参数:
```yaml
args:
- --watch-ingress-without-class=true
```
引用[^3]
4. **应用部署文件**
```bash
kubectl apply -f deploy.yaml
```
---
#### 二、配置 Ingress 规则
1. **创建示例服务**
部署一个后端服务用于测试:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
```
2. **定义 Ingress 规则**
创建 Ingress 对象,将流量路由到后端服务:
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: "nginx" # 指定 Ingress 控制器类型[^4]
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-svc
port:
number: 80
```
引用[^2]
---
#### 三、验证 Ingress 配置
1. **获取访问入口**
查看 Ingress Controller 的 NodePort:
```bash
kubectl get svc -n ingress-nginx
```
输出示例:
```
NAME TYPE CLUSTER-IP PORT(S)
ingress-nginx NodePort 10.96.100.10 80:31686/TCP,443:32443/TCP
```
2. **测试访问**
通过 NodePort 访问服务(假设节点 IP 为 192.168.1.100):
```bash
curl -H "Host: example.com" http://192.168.1.100:31686
```
若返回 Nginx 欢迎页,则配置成功。若返回 404,需检查后端服务状态[^5]。
---
#### 四、高级配置
1. **自定义 IngressClass**
创建自定义 IngressClass 资源:
```yaml
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: pro
spec:
controller: k8s.io/pro-ingress
```
2. **HTTPS 配置**
通过 Secret 配置 TLS 证书:
```yaml
apiVersion: v1
kind: Secret
metadata:
name: tls-secret
type: kubernetes.io/tls
data:
tls.crt: <Base64编码证书>
tls.key: <Base64编码私钥>
```
---
阅读全文
相关推荐













