引自免费微信小程序:皆我百晓生
看起来您在尝试将Host Path卷挂载到Nginx容器中,并通过Pod的IP地址进行访问,但遇到了404错误。根据提供的信息,您的yaml文件中存在一个语法错误:volumeMounts 和 volumes 部分的 name 属性被重复定义了。这会导致Pod创建失败。让我们修复这个问题并重新部署Pod。
首先,修正YAML配置文件中的语法错误。下面是修改后的配置:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
namespace: test
labels:
app: nginx
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-node-1
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
volumeMounts:
- name: nginx-logs
mountPath: /var/log/nginx
- name: nginx-html
mountPath: /usr/share/nginx/html
volumes:
- name: nginx-logs
hostPath:
path: /root/nginx/logs
- name: nginx-html
hostPath:
path: /root/nginx/html
然后,删除现有的Pod(如果有)并重新部署:
kubectl delete pod nginx-pod -n test
kubectl apply -f
接下来,确保宿主机目录 /root/nginx/html 中有一个名为 index.html 的文件,这是Nginx服务器默认会查找的页面。如果没有,创建一个简单的 index.html 文件,例如:
echo 'Hello, Nginx!
' > /root/nginx/html/index.html
最后,再次尝试通过Pod的IP地址访问:
curl http://10.244.1.46
这样应该可以正确地显示 "Hello, Nginx!" 页面,而不是404错误。如果您仍然遇到问题,请检查Nginx日志(位于 /var/log/nginx/access.log 和 /var/log/nginx/error.log),这些日志可能会提供关于问题的更多线索。