首页 > 解决方案 > kubectl 无法访问 pod 应用程序

问题描述

A 有这个 pod 规格:

apiVersion: v1
kind: Pod
metadata:
  name: wp
spec:
  containers:
  - image: wordpress:4.9-apache
    name: wordpress
    env:
      - name: WORDPRESS_DB_PASSWORD
        value: mysqlpwd
      - name: WORDPRESS_DB_HOST
        value: 127.0.0.1
  - image: mysql:5.7
    name: mysql
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: mysqlpwd
    volumeMounts:
    - name: data
      mountPath: /var/lib/mysql
  volumes:
    - name: data
      emptyDir: {}

我使用以下方式部署它:

kubectl create -f wordpress-pod.yaml

现在它已正确部署:

kubectl get pods wp 2/2 Running 3 35h

然后当我这样做时:

kubectl 描述 po/wp

Name:         wp
Namespace:    default
Priority:     0
Node:         node3/192.168.50.12
Start Time:   Mon, 13 Jan 2020 23:27:16 +0100
Labels:       <none>
Annotations:  <none>
Status:       Running
IP:           10.233.92.7
IPs:
  IP:  10.233.92.7
Containers:

我的问题是我无法访问该应用程序:

wget http://192.168.50.12:8080/wp-admin/install.php
Connecting to 192.168.50.12:8080... failed: Connection refused.

wget http://10.233.92.7:8080/wp-admin/install.php 都不起作用

pod 描述或部署过程中是否有任何问题?

谢谢

标签: mysqlwordpresskubernetes

解决方案


使用您当前的设置,您需要wget http://10.233.92.7:8080/wp-admin/install.php在集群内使用,即通过在kubectl exec另一个 pod 中执行,因为10.233.92.7IP 仅在集群内有效。

您应该创建一个服务来公开您的 pod。创建集群 IP 类型服务(默认),以便从集群内部访问。如果您想从集群外部(即从您的桌面)访问,则创建一个 NodePort 或 LoadBalancer 类型的服务。

从桌面访问应用程序的其他方式是端口转发。在这种情况下,您不需要创建服务。

这是使用 NodePort 服务访问 pod的教程。在这种情况下,您的节点需要有公共 IP。


推荐阅读