k8s1.26.1部署 ingress-nginx-controller(1.6.4)

本文提供了一种在1.24版本的Kubernetes集群中配置Nginx-Ingress的步骤,包括从GitHub获取ingress-nginx的deploymentYAML文件,修改镜像源,以及将service类型从LoadBalancer改为NodePort。此外,还建议预先下载镜像以避免拉取失败。

参考

ingress-nginx git地址

https://github.com/kubernetes/ingress-nginx
在这里插入图片描述

ingress-nginx 的 deployment的地址:

https://kubernetes.github.io/ingress-nginx/deploy/

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.6.4/deploy/static/provider/cloud/deploy.yaml

可以实现下载文件内容

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.6.4/deploy/static/provider/cloud/deploy.yaml

然后执行如下命令启动ingress-nginx-controller

kubectl apply -f deploy.yaml
  • 修改文件中的image地址
    在这里插入图片描述
    在这里插入图片描述
    替换成如下内容:
image: dyrnq/ingress-nginx-controller:v1.6.4
image: dyrnq/kube-webhook-certgen:v20220916-gd32f8c343

为防止拉取镜像失败,可以提前下载上述两个镜像到本地

参考k8s的V1.23版本ingress-nginx的配置

  • 将文件中的 type: LoadBalancer 修改为 type: NodePort
<think>我们正在处理用户的问题:解决Nginx配置错误“ssl_prefer_server_ciphers duplicate” 根据引用[1]中提到的错误信息,用户遇到了两个问题: 1. 在配置文件中出现了重复的TLS协议版本设置(TLSv1.1, TLSv1.2, TLSv1.3) 2. "ssl_ciphers"指令重复 而用户当前的问题是关于“ssl_prefer_server_ciphers”指令重复。 虽然引用中没有直接提到“ssl_prefer_server_ciphers”重复,但我们可以推断,错误模式是类似的。 在Nginx配置中,同一个指令在同一个作用域(例如server块)中只能出现一次。如果重复出现,就会导致配置测试失败。 因此,我们需要在配置文件中找到重复的“ssl_prefer_server_ciphers”指令,并删除其中一个。 步骤: 1. 定位配置文件:根据引用[1]中的路径,配置文件位于`/www/server/panel/vhost/nginx/xxxxxxxxxxx.com.conf`(实际文件名可能不同,但用户应该知道是哪个文件) 2. 在配置文件中查找重复的“ssl_prefer_server_ciphers”指令。 3. 删除其中一个,保留一个即可。 另外,引用[5]中提到了关于SSL配置的一些参数,包括ssl_prefer_server_ciphers,它用于设置服务器优先选择加密套件。 注意:在同一个配置块(如server块)中,同一个指令只能出现一次。 示例: 错误配置: server { ... ssl_prefer_server_ciphers on; ... # 其他配置 ssl_prefer_server_ciphers on; # 重复了 } 正确做法:删除其中一行,只保留一个。 但是,用户可能不知道具体在配置文件的哪一行。我们可以建议用户使用文本编辑器的查找功能(如Ctrl+F)搜索“ssl_prefer_server_ciphers”。 如果用户使用的是宝塔面板,那么配置文件可能是由面板生成的,重复可能是由于面板的bug或者用户手动添加导致。 另外,引用[1]中还提到了其他重复指令(如ssl_ciphers)和重复的TLS协议版本设置,用户可能也需要一并检查。 针对TLS协议版本重复的问题,同样需要删除重复的协议版本,只保留一个。例如: 错误:ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3 TLSv1.2; 正确:ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; 因此,我们可以给用户以下步骤: 1. 打开Nginx配置文件(具体路径根据用户的实际配置文件,如引用[1]中提到的文件)。 2. 搜索“ssl_prefer_server_ciphers”,找到重复的行,删除多余的,只保留一个。 3. 同时检查是否有重复的“ssl_ciphers”和“ssl_protocols”指令,如果有,也删除重复的部分(注意:对于ssl_protocols,它的值是一个列表,要确保整个指令只出现一次,并且值列表中没有重复的协议)。 4. 保存文件。 5. 测试配置文件:`nginx -t` 6. 如果测试通过,重新加载Nginx:`nginx -s reload` 或者使用宝塔面板的重载功能。 如果用户不知道配置文件的位置,可以建议用户通过以下命令查找: nginx -t 这个命令会测试配置文件并输出配置文件路径和错误位置。 由于用户之前有提到宝塔面板,所以配置文件路径可能是宝塔默认的路径:/www/server/panel/vhost/nginx/ 目录下。 如果用户按照上述步骤操作后问题仍然存在,可能需要检查是否在多个配置文件中包含了相同的指令(例如,在include的配置文件中也有设置)。但根据引用[1]中的错误信息,问题出现在单个配置文件的特定行,所以先处理该文件即可。 另外,引用[4]中还有一些其他注意事项: - 引用[4]提到,如果Nginx的SSL模块没有开启,需要重新编译Nginx并开启SSL模块。但用户的问题是指令重复,所以先不考虑这个。 - 引用[5]提供了关于ssl_prefer_server_ciphers的上下文配置,我们可以参考其配置。 因此,回答如下:</think>### 解决 Nginx 配置错误:`ssl_prefer_server_ciphers` 指令重复问题 #### 问题分析 根据引用[1]的错误日志: ``` nginx: [emerg] "ssl_ciphers" directive is duplicate ``` 该错误表明在 Nginx 配置文件中存在重复的 SSL 指令。虽然你当前遇到的是 `ssl_prefer_server_ciphers` 重复,但根本原因相同:**同一作用域内重复声明了 SSL 指令**。 #### 解决步骤 1. **定位重复指令** ```bash grep -n "ssl_prefer_server_ciphers" /www/server/panel/vhost/nginx/yourdomain.com.conf ``` - 查看输出结果中重复出现的行号(如 `42` 和 `43`) 2. **编辑配置文件** ```nginx server { listen 443 ssl; server_name yourdomain.com; # 保留唯一声明(删除重复行) ssl_prefer_server_ciphers on; # [!code --] # ssl_prefer_server_ciphers on; # 删除此行 [!code ++] # 其他 SSL 配置 ssl_protocols TLSv1.2 TLSv1.3; # 确保协议未重复(引用[1]) ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; # 引用[5] } ``` 3. **验证配置** ```bash nginx -t ``` - 成功输出:`configuration file /etc/nginx/nginx.conf test is successful` - 失败示例(引用[1]):`configuration file /www/server/nginx/conf/nginx.conf test failed` 4. **重载 Nginx** ```bash systemctl reload nginx # 或使用宝塔面板的重载功能 ``` #### 关键注意事项 1. **作用域规则**(引用[5]): - 每个 `server {}` 块内相同指令只能出现一次 - 避免在 `http {}` 和 `server {}` 同时声明相同指令 2. **推荐完整 SSL 配置**: ```nginx server { listen 443 ssl; server_name yourdomain.com; # 证书路径(引用[4]) ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; # 协议与加密套件(引用[1][5]) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; # 唯一声明 # 性能优化(引用[5]) ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; } ``` 3. **常见错误关联**: - 证书链不完整会导致 `SSL handshake failed`(引用[2][4]) - 缺少 `ssl_certificate` 声明会触发 `the ssl directive is deprecated`(引用[2]) - 协议重复声明引发 `duplicate value` 警告(引用[1]) #### 配置验证流程图 ```mermaid graph TD A[编辑配置文件] --> B{运行 nginx -t} B -->|成功| C[重载服务] B -->|失败| D[检查错误行号] D --> E[修复重复指令] E --> B C --> F[HTTPS访问测试] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值