操作系统信息
例如:物理机,Ubuntu2004,4C/16G * 3

Kubernetes版本信息

Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5", GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691", GitTreeState:"clean", BuildDate:"2021-09-15T21:10:45Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5", GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691", GitTreeState:"clean", BuildDate:"2021-09-15T21:04:16Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}

容器运行时

Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:33 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:43:42 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

KubeSphere版本信息
v3.2.1 在线安装

问题是什么
按照暴露TCP和UDP服务,编写了tcp-services.yaml

kind: ConfigMap
apiVersion: v1
metadata:
  name: tcp-services
  namespace: kubesphere-controls-system
  annotations:
    kubesphere.io/creator: sunyajie
data:
  '3306': 'cloud-platform-java-dev/mysql:3306'

新增了- '--tcp-services-configmap=kubesphere-controls-system/tcp-services'

kind: Deployment
apiVersion: apps/v1
metadata:
  name: kubesphere-router-cloud-platform-java-dev
  namespace: kubesphere-controls-system
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: kubesphere-router-cloud-platform-java-dev-ingress
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/version: 0.48.1
    helm.sh/chart: ingress-nginx-3.35.0
  annotations:
    deployment.kubernetes.io/revision: '6'
    meta.helm.sh/release-name: kubesphere-router-cloud-platform-java-dev-ingress
    meta.helm.sh/release-namespace: kubesphere-controls-system
    servicemesh.kubesphere.io/enabled: 'false'
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/component: controller
      app.kubernetes.io/instance: kubesphere-router-cloud-platform-java-dev-ingress
      app.kubernetes.io/name: ingress-nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app.kubernetes.io/component: controller
        app.kubernetes.io/instance: kubesphere-router-cloud-platform-java-dev-ingress
        app.kubernetes.io/name: ingress-nginx
      annotations:
        sidecar.istio.io/inject: 'false'
    spec:
      containers:
        - name: controller
          image: 'kubesphere/nginx-ingress-controller:v0.48.1'
          args:
            - /nginx-ingress-controller
            - >-
              --election-id=ingress-controller-leader-kubesphere-router-cloud-platform-java-dev
            - '--ingress-class=nginx'
            - >-
              --configmap=$(POD_NAMESPACE)/kubesphere-router-cloud-platform-java-dev
            - '--watch-namespace=cloud-platform-java-dev'
            - '--tcp-services-configmap=kubesphere-controls-system/tcp-services'
...
...

会马上创建一个新的pod,还未创建完成,新的pod就又被删除了,查看Deployment,发现新增的--tcp-services-configmap=kubesphere-controls-system/tcp-services

就没有了

然后修改IngressController,新增3306端口暴露

kind: Service
apiVersion: v1
metadata:
  name: kubesphere-router-cloud-platform-java-dev
  namespace: kubesphere-controls-system
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: kubesphere-router-cloud-platform-java-dev-ingress
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/version: 0.48.1
    helm.sh/chart: ingress-nginx-3.35.0
spec:
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: http
      nodePort: 32444
    - name: https
      protocol: TCP
      port: 443
      targetPort: https
      nodePort: 30872
    - name: mysql
      protocol: TCP
      port: 3306
      targetPort: 3306

编辑后,会暴露新的端口

但是在外面使用对应的30536端口发现无法访问,telnet也发现30536端口没有打开