mysql - 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 描述或部署过程中是否有任何问题?
谢谢
解决方案
使用您当前的设置,您需要wget http://10.233.92.7:8080/wp-admin/install.php
在集群内使用,即通过在kubectl exec
另一个 pod 中执行,因为10.233.92.7
IP 仅在集群内有效。
您应该创建一个服务来公开您的 pod。创建集群 IP 类型服务(默认),以便从集群内部访问。如果您想从集群外部(即从您的桌面)访问,则创建一个 NodePort 或 LoadBalancer 类型的服务。
从桌面访问应用程序的其他方式是端口转发。在这种情况下,您不需要创建服务。
这是使用 NodePort 服务访问 pod的教程。在这种情况下,您的节点需要有公共 IP。
推荐阅读
- c++ - 关于打印 STL 容器以进行认可测试的公约
- javascript - vue-chart.js / vuex:当 vuex 状态改变时图表不更新
- postgresql - PostgresSQL 函数需要很长时间
- ubuntu - 如何使用 user@hostname:$ 启动终端
- javascript - 这个元素可能在来自不同 src 的 iframe 内。目前 chropath 不支持它们
- python - 我们可以在 for 循环中声明一个空函数吗?
- rest - 无法对 github 存储库统计信息进行分页
- spring - @ControllerAdvice 未捕获 Rest API 异常
- php - php - fpdf 选择案例 $row
- ios - 架构 arm64 的 1188 个重复符号