-
Notifications
You must be signed in to change notification settings - Fork 8.4k
tcp-services configMap add one configuration , Other services that are accessed through tcp cannot be accessed properly #9943
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
This issue is currently awaiting triage. If Ingress contributors determines this is a relevant issue, they will accept it by applying the The Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/remove-kind bug Can you please write a step-by-step instruction set here, that anyone can use to copy/paste from and re-create the problem in a minikube or kind cluster. |
apiVersion: v1
apiVersion: v1
Obtain correct results first, and then the result is not normal |
@wcsceshi I don't understand the problem you have described. Let us wait if someone else can understand and comment on this issue.
|
Sorry, maybe I didn't make myself clear. What I mean by this is that if someone modifs tcp-services configMap, adds a configuration (e.g. 32100: default/app-svc:80) and saves it while I am accessing the service through tcp, I will only get an error result. like "connection reset by peer"。 I use tcp to access the IP address of the node where the ingress-controller pod resides and the port configured by the tcp -services configMap to access app service |
I still don't understand. I don't want to guess what problem you want the project to solve. So lets wait for some expert comments. But if you referring to dropping established connections during config reload, then that is ow nginx works. The project maintainers are working on splitting control-plane and data-plane and that may improve the experience. |
@ghostloda I am not a developer but since you submitted a PR, I was wondering if it is possible for you and @wcsceshi to chat on a zoom session to triage this issue. There are multiple aspects about the description of this issue and the data that is posted in this issue, that can be discussed on chat like arrangement, to make progress. |
I mean a zoom or slack chat with me |
Good idea, i agree @longwuyuan |
Steps to Reproduce the Issue:
While deleting a service from the configmap, Lua will resynchronize the backend services. During this process, there may be an error the ipv6 address is not formatted, resulting in the unavailability of other services as well. |
@ghostloda why do you configure nginx webserver for TCP access ? Whole world uses nginx webserver for HTTP/HTTPS, not TCP. |
Just as a backend service for testing.This is not the main focal point of the issue. I think this issue is critical,when a TCP service(only ipv6) is deleting(or edit), it may affects the normal access of other services.We should promptly investigate and confirm this issue. Based on the debug logs, the error is quite evident. |
Hi,@longwuyuan I have already chat with @wcsceshi , and this bug was discovered in their production environment. This PR will fix the issue, and they have already tested it in their production environment. |
After a quick glance, I think reproducing this issue should be relatively simple. @wcsceshi could you please format your examples? #9943 (comment) The complete and directly usable reproduction steps will save everyone's time. |
@wcsceshi & @ghostloda , why don't you try mysql as one tcp service and postgresql as second tcp service. Then keep mysql and psql clients open for test. Also, how about you disable ipv6 in the cluster. Thirdly, any chance you can write more details about what is the app that you are using behind TCP ports. Maybe we will discover more than just a unformatted ipv6 address. Nginx reconciling during nginx.conf reload will cause some problems for sure. Maybe we will also find out why only you are reporting this problem and other users of TCP services are not reporting this problem. |
I've seen others discover similar issues #9307 |
That one also is using nginx webserver in example. |
I re-used two pod of mysql and the corresponding service with ipv6 enabled for testing. The testing procedure and test results are as follows step1. i create two deployment and service (with ipv6), the mirror is MySQL , below is the resource object
step2. add two pieces of data to the configMap of tcp-services
step3. use IP of the node where the pod of nginx ingress controller is located,with the configured tcp host port,to access the created service . I was able to log into MySQL successfully and log out safely
step4. I tried to log in and out of mysql multiple times using a shell script, using the host ip and port,And execute
step5. I tried to delete another mysql pod created during the execution of the shell script ,and found many errors in the shell script execution results
Viewing the ingress-nginx pod also has a lot of error messages
|
Thanks for your update. But please format the contents, you can refer to this documentation https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks#fenced-code-blocks |
ok ,I've formatted the content |
TCP/UDP forwarding is being deprecated so no action item on the project in this issue. Hence I will close it. /close |
@longwuyuan: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
kubectl version 1.23.6, nginx-ingress-controller image version v1.3.0
What happened:
I added a piece of data to the tcp-services configMap,The ipv6 dual-stack nginx service is enabled,then ran the curl nodeIp:port command to get the normal service return data.
However, when I added another piece of data to the configMap of tcp-services(ipv6 dual stack is also enabled for nginx services), I looped through shell.sh to access the previously added services and got an abnormal return,It took about 30 seconds to get the normal service result.
What you expected to happen:
When I add configuration data to the configMap of tcp-services, I do not affect access to other services that are also configured through the configMap of tcp-services
NGINX Ingress controller version (exec into the pod and run nginx-ingress-controller --version.):
NGINX Ingress controller
Release: v1.3.0
Build: 2b7b748
Repository: https://github.com/kubernetes/ingress-nginx
nginx version: nginx/1.19.10
Kubernetes version (use
kubectl version
):Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.6", GitCommit:"ad3338546da947756e8a88aa6822e9c11e7eac22", GitTreeState:"clean", BuildDate:"2022-04-14T08:49:13Z", GoVersion:"go1.17.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.6", GitCommit:"ad3338546da947756e8a88aa6822e9c11e7eac22", GitTreeState:"clean", BuildDate:"2022-04-14T08:43:11Z", GoVersion:"go1.17.9", Compiler:"gc", Platform:"linux/amd64"}
Environment:
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
Linux 10.19.38.223 4.19.12-1.el7.elrepo.x86_64 #1 SMP Fri Dec 21 11:06:36 EST 2018 x86_64 x86_64 x86_64 GNU/Linux
helm ls -A | grep -i ingress
helm -n <ingresscontrollernamepspace> get values <helmreleasename>
[root@10 sh]# kubectl describe ingressclasses
Name: nginx
Labels: app.kubernetes.io/component=controller
app.kubernetes.io/instance=ingress-nginx
app.kubernetes.io/name=ingress-nginx
app.kubernetes.io/part-of=ingress-nginx
app.kubernetes.io/version=1.3.0
Annotations:
Controller: k8s.io/ingress-nginx
Events:
[root@10 sh]#
[root@10 sh]# kubectl get po -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-629dv 0/1 Completed 0 62d
ingress-nginx-admission-patch-4rlht 0/1 Completed 0 62d
ingress-nginx-controller-4bfc6 1/1 Running 1 (43d ago) 50d
ingress-nginx-controller-cghx9 1/1 Running 1 (43d ago) 43d
shell script content:
#!/bin/bash
for I in {1..50}; do
curl -v http://x.x.x.x:31687
let SUM=$I
echo "$SUM"
sleep 1
done
The text was updated successfully, but these errors were encountered: