如何解决Kubernetes:将本地文件夹安装到Pod时出现问题-“ 0/1个节点可用:1个节点具有卷节点亲缘性冲突”
我尝试将本地文件夹安装为PersistentVolume并在其中一个pod中使用它,但是似乎该过程存在问题,并且pod保持状态为“待处理”。
以下是我的pv yaml文件:
kind: PersistentVolume
apiVersion: v1
metadata:
name: pv-web
labels:
type: local
spec:
storageClassName: mlo-web
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
local:
path: ${MLO_REPO_DIR}/web/
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- mlo-node
和pvc yaml文件:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-web
namespace: mlo-dev
labels:
type: local
spec:
storageClassName: mlo-web
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
和部署yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
namespace: mlo-dev
labels:
app: web
spec:
replicas: 1
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: xxxxxx/web:latest
ports:
- containerPort: 3000
volumeMounts:
- name: webdir
mountPath: /service
...
volumes:
- name: webdir
persistentVolumeClaim:
claimName: pvc-web
我发现豆荚始终处于“待处理”状态:
web-deployment-d498c7f57-4cfbg 0/1 Pending 0 26m
当我使用“ kubectl describe”检查窗格状态时,结果如下:
Name: web-deployment-d498c7f57-4cfbg
Namespace: mlo-dev
Priority: 0
Node: <none>
Labels: app=web
pod-template-hash=d498c7f57
Annotations: <none>
Status: Pending
IP:
IPs: <none>
Controlled By: ReplicaSet/web-deployment-d498c7f57
Containers:
web:
Image: xxxxxx/web:latest
Port: 3000/TCP
Host Port: 0/TCP
Command:
npm
run
mlo-start
Environment:
NODE_ENV: <set to the key 'NODE_ENV' of config map 'env-config'> Optional: false
WEBPACK_DEV_SERVER: <set to the key 'webpack_dev_server' of config map 'env-config'> Optional: false
REDIS_URL_SESSION: <set to the key 'REDIS_URL' of config map 'env-config'> Optional: false
WORKSHOP_ADDRESS: <set to the key 'WORKSHOP_ADDRESS' of config map 'env-config'> Optional: false
USER_API_ADDRESS: <set to the key 'USER_API_ADDRESS' of config map 'env-config'> Optional: false
ENVCUR_API_ADDRESS: <set to the key 'ENVCUR_API_ADDRESS' of config map 'env-config'> Optional: false
WIDGETS_API_ADDRESS: <set to the key 'WIDGETS_API_ADDRESS' of config map 'env-config'> Optional: false
PROGRAM_BULL_URL: <set to the key 'REDIS_URL' of config map 'env-config'> Optional: false
PROGRAM_PUBSUB: <set to the key 'REDIS_URL' of config map 'env-config'> Optional: false
PROGRAM_API_ADDRESS: <set to the key 'PROGRAM_API_ADDRESS' of config map 'env-config'> Optional: false
MARATHON_BULL_URL: <set to the key 'REDIS_URL' of config map 'env-config'> Optional: false
MARATHON_API_ADDRESS: <set to the key 'MARATHON_API_ADDRESS' of config map 'env-config'> Optional: false
GIT_API_ADDRESS: <set to the key 'GIT_API_ADDRESS' of config map 'env-config'> Optional: false
GIT_HTTP_ADDRESS: <set to the key 'GIT_HTTP_ADDRESS' of config map 'env-config'> Optional: false
LOG_URL: <set to the key 'LOG_URL' of config map 'env-config'> Optional: false
LOGGER_PUBSUB: <set to the key 'REDIS_URL' of config map 'env-config'> Optional: false
AUTH0_CLIENT_ID: <set to the key 'AUTH0_CLIENT_ID' of config map 'env-config'> Optional: false
AUTH0_DOMAIN: <set to the key 'AUTH0_DOMAIN' of config map 'env-config'> Optional: false
AUTH0_CALLBACK_URL: <set to the key 'AUTH0_CALLBACK_URL' of config map 'env-config'> Optional: false
AUTH0_LOGOOUT_RETURN: <set to the key 'AUTH0_LOGOOUT_RETURN' of config map 'env-config'> Optional: false
AUTH0_CLIENT_SECRET: <set to the key 'auth0-client-secret' in secret 'env-secret'> Optional: false
SESSION_SECRET: <set to the key 'session-secret' in secret 'env-secret'> Optional: false
Mounts:
/service from webdir (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-w9v7j (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
webdir:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: pvc-web
ReadOnly: false
default-token-w9v7j:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-w9v7j
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 30s (x2 over 30s) default-scheduler 0/1 nodes are available: 1 node(s) had volume node affinity conflict.
我发现的错误消息是:
Warning FailedScheduling 30s (x2 over 30s) default-scheduler 0/1 nodes are available: 1 node(s) had volume node affinity conflict.
您知道我的问题在哪里吗?非常感谢!
解决方法
您似乎没有一个符合您的亲和力要求的节点。
删除PersistentVolume
上的相似性要求:
删除此部分:
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- mlo-node
并且只能使用(并将local
更改为hostPath
):
kind: PersistentVolume
apiVersion: v1
metadata:
name: pv-web
labels:
type: local
spec:
storageClassName: mlo-web
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
hostPath:
path: /absolute-path/web/
这类似于Configure a Pod to Use a PersistentVolume for Storage示例,也使用Minikube。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。