gpt4 book ai didi

nginx - 更改 Kubernetes nginx-ingress-controller 端口

转载 作者:行者123 更新时间:2023-12-02 12:32:32 25 4
gpt4 key购买 nike

我在 RedHat EC2 实例上安装了 Minikube v1.3.1 以进行一些测试。

由于 nginx-ingress-controller 默认使用的端口已经在使用中,我试图在部署中更改它们但没有结果。请有人建议如何做?

我如何知道该端口已在使用中?

当我使用命令 kubectl -n kube-system get deployment | grep nginx 列出系统 Pod 时,我得到:

nginx-ingress-controller 0/1 1 0 9d



这意味着我的容器没有启动。当我使用命令 kubectl -n kube-system describe pod nginx-ingress-controller-xxxxx 描述它时我得到:

Type Reason Age From
Message ---- ------ ----
---- ------- Warning FailedCreatePodSandBox 42m (x163507 over 2d1h) kubelet, minikube (combined from similar events): Failed create pod sandbox: rpc error: code = Unknown desc = failed to start sandbox container for pod "nginx-ingress-controller-xxxx": Error response from daemon: driver failed programming external connectivity on endpoint k8s_POD_nginx-ingress-controller-xxxx_kube-system_...: Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use



然后我检查使用这些端口的进程并杀死它们。这释放了它们并且入口 Controller pod 被正确部署。

我尝试更改 nginx-ingress-controller 端口的原因是什么?
kubectl -n kube-system get deployment | grep nginx

> NAME READY UP-TO-DATE AVAILABLE AGE
> nginx-ingress-controller 0/1 1 0 9d

kubectl -n kube-system edit deployment nginx-ingress-controller

我的部署的相关部分如下所示:
name: nginx-ingress-controller
ports:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
- containerPort: 81
hostPort: 81
protocol: TCP
- containerPort: 444
hostPort: 444
protocol: TCP
- containerPort: 18080
hostPort: 18080
protocol: TCP

然后我删除了端口 443 和 80 的小节,但是当我推出更改时, 他们再次被添加 .

现在我的服务无法通过入口访问了。

最佳答案

请注意 minikube 随附 addon-manager ,其作用是关注特定的插件模板文件(默认位置:/etc/kubernetes/addons/)并根据托管资源的标签值执行以下两个特定操作之一:

addonmanager.kubernetes.io/mode


  • addonmanager.kubernetes.io/mode=Reconcile

  • Will be periodically reconciled. Direct manipulation to these addonsthrough apiserver is discouraged because addon-manager will bringthem back to the original state. In particular


  • addonmanager.kubernetes.io/mode=KeepOnly

  • Will be checked for existence only. Users can edit these addons asthey want.


    因此,为了保留您自定义版本的默认 Ingress 服务监听端口,请先更改 Ingress deployment template configurationKeepOnly在 minikube 虚拟机上。

    关于nginx - 更改 Kubernetes nginx-ingress-controller 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57926545/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com