【问题标题】:Why my Nodeport service change its port number?为什么我的 Nodeport 服务改变了它的端口号?
【发布时间】:2023-01-26 20:23:18
【问题描述】:

我正在尝试为 k8s 安装 velero。在尝试安装 mini.io 的安装过程中,我将其服务类型从集群 IP 更改为节点端口。我的 Pod 运行成功,我还可以看到节点端口服务已启动并正在运行。

master-k8s@masterk8s-virtual-machine:~/velero-v1.9.5-linux-amd64$ kubectl get pods -n velero -owide              NAME                     READY   STATUS    RESTARTS   AGE   IP             NODE                       NOMINATED NODE   READINESS GATES
minio-8649b94fb5-vk7gv   1/1     Running   0          16m   10.244.1.102   node1k8s-virtual-machine   <none>           <none>
master-k8s@masterk8s-virtual-machine:~/velero-v1.9.5-linux-amd64$ kubectl get svc -n velero                      NAME    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
minio   NodePort   10.111.72.207   <none>        9000:31481/TCP   53m

当我尝试访问我的服务端口号更改时3148145717通过它自己。每次我更正端口号并按回车键时,它都会变回新端口,我无法访问我的应用程序。

这些是来自 mini.io 服务文件的代码。

apiVersion: v1
kind: Service
metadata:
  namespace: velero
  name: minio
  labels:
    component: minio
spec:
  type: NodePort
  ports:
    - port: 9000
      targetPort: 9000
      protocol: TCP
  selector:
    component: minio

到目前为止我做了什么?

我查找日志,一切都显示成功,没有错误。我也尝试使用负载平衡器服务。使用负载平衡器端口不会发生变化,但我无法访问该应用程序。 注意到在谷歌上发现了这个问题。 我还检查了所有命名空间 pod 和服务,以检查是否正在使用这些端口号。没有服务使用这些端口。

我想要什么?您能帮我找出导致我的应用程序更改其端口的原因吗?问题出在哪里以及如何解决。?如何访问应用程序仪表板?

更新问题

这是完整的代码文件。这可能有助于发现我的错误。

apiVersion: v1
kind: Namespace
metadata:
  name: velero

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: velero
  name: minio
  labels:
    component: minio
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      component: minio
  template:
    metadata:
      labels:
        component: minio
    spec:
      volumes:
      - name: storage
        emptyDir: {}
      - name: config
        emptyDir: {}
      containers:
      - name: minio
        image: minio/minio:latest
        imagePullPolicy: IfNotPresent
        args:
        - server
        - /storage
        - --config-dir=/config
        env:
        - name: MINIO_ACCESS_KEY
          value: "minio"
        - name: MINIO_SECRET_KEY
          value: "minio123"
        ports:
        - containerPort: 9002
        volumeMounts:
        - name: storage
          mountPath: "/storage"
        - name: config
          mountPath: "/config"

---
apiVersion: v1
kind: Service
metadata:
  namespace: velero
  name: minio
  labels:
    component: minio
spec:
  # ClusterIP is recommended for production environments.
  # Change to NodePort if needed per documentation,
  # but only if you run Minio in a test/trial environment, for example with Minikube.
  type: NodePort
  ports:
    - port: 9002
      nodePort: 31482
      targetPort: 9002
      protocol: TCP
  selector:
    component: minio

---
apiVersion: batch/v1
kind: Job
metadata:
  namespace: velero
  name: minio-setup
  labels:
    component: minio
spec:
  template:
    metadata:
      name: minio-setup
    spec:
      restartPolicy: OnFailure
      volumes:
      - name: config
        emptyDir: {}
      containers:
      - name: mc
        image: minio/mc:latest
        imagePullPolicy: IfNotPresent
        command:
        - /bin/sh
        - -c
        - "mc --config-dir=/config config host add velero http://minio:9000 minio minio123 && mc --config-dir=/config mb -p velero/velero"
        volumeMounts:
        - name: config
          mountPath: "/config"

Pod 的 Edit2 日志

WARNING: MINIO_ACCESS_KEY and MINIO_SECRET_KEY are deprecated.
         Please use MINIO_ROOT_USER and MINIO_ROOT_PASSWORD
Formatting 1st pool, 1 set(s), 1 drives per set.
WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
MinIO Object Storage Server
Copyright: 2015-2023 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2023-01-25T00-19-54Z (go1.19.4 linux/amd64)

Status:         1 Online, 0 Offline.
API: http://10.244.1.108:9000  http://127.0.0.1:9000
Console: http://10.244.1.108:33045 http://127.0.0.1:33045

Documentation: https://min.io/docs/minio/linux/index.html
Warning: The standard parity is set to 0. This can lead to data loss.

编辑 Pod 的 3 个日志

master-k8s@masterk8s-virtual-machine:~/velero-1.9.5$ kubectl logs minio-8649b94fb5-qvzfh -n velero
WARNING: MINIO_ACCESS_KEY and MINIO_SECRET_KEY are deprecated.
         Please use MINIO_ROOT_USER and MINIO_ROOT_PASSWORD
Formatting 1st pool, 1 set(s), 1 drives per set.
WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
MinIO Object Storage Server
Copyright: 2015-2023 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2023-01-25T00-19-54Z (go1.19.4 linux/amd64)

Status:         1 Online, 0 Offline.
API: http://10.244.2.131:9000  http://127.0.0.1:9000
Console: http://10.244.2.131:36649 http://127.0.0.1:36649

Documentation: https://min.io/docs/minio/linux/index.html
Warning: The standard parity is set to 0. This can lead to data loss.

【问题讨论】:

    标签: kubernetes kubectl minio velero


    【解决方案1】:

    您可以在端口配置中设置nodePort 号码,这样它就不会被自动设置。

    试试这个服务:

    apiVersion: v1
    kind: Service
    metadata:
      namespace: velero
      name: minio
      labels:
        component: minio
    spec:
      type: NodePort
      ports:
        - port: 9000
          nodePort: 31481
          targetPort: 9000
          protocol: TCP
      selector:
        component: minio
    

    【讨论】:

    • 谢谢你的帮助。现在端口号没有改变,但我仍然无法访问我的应用程序。
    • 您是否已登录集群节点之一并尝试?
    • 如果您执行kubectl get nodes -o wide,它会显示节点的 IP 吗?
    • 是的,它将此 pod 分配给节点 1,我正在使用节点 1 IP。我也登录到节点 1 并在那里尝试。都带有 localhost:31481 和 Ipofnode1:31481。它显示无法访问站点。
    • 你可以尝试端口转发kubectl port-forward svc/minio 9000:9000 -n velero来检查服务是否正在运行?另外,您是否在部署中设置了- containerPort: 9000
    猜你喜欢
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2020-12-12
    • 1970-01-01
    • 2020-05-20
    相关资源
    最近更新 更多