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 describe 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 仅在集群内有效。
您应该创建一个service用于暴露你的 pod。创建一个集群IP类型服务(默认)用于从集群内部访问。如果您想从集群外部(即从桌面)访问,请创建 NodePort 或 LoadBalancer 类型的服务。
从桌面访问应用程序的其他方式是 port forwarding 。在这种情况下,您不需要创建服务。
这是 accessing pods using NodePort service 的教程。在这种情况下,您的节点需要有公共(public) IP。
关于mysql - kubectl 无法访问 pod 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59749339/