Kubernetes:将本地文件夹挂载到 pods 时出现问题 - "0/1 nodes are available: 1 node(s) had volume node affinity confl



我试图将一个本地文件夹装载为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

和聚氯乙烯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描述";,结果如下:

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.

你知道我的问题在哪里吗?非常感谢!

您似乎没有符合亲和力要求的Node。

删除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/

这类似于将Pod配置为使用存储的PersistentVolume示例,也使用Minikube。

我遇到了类似的问题。根据上面的注释@ken Tsoi,它是固定的。以下是我的更改:

新增:kind:StorageClassapiVersion:storage.k8s.io/v1元数据:名称:本地存储提供者:kubernetes.io/no-provisionervolumeBindingMode:WaitForFirstConsumer

apiVersion:v1kind:PersistentVolume元数据:名称:詹金斯pv卷标签:类型:本地规格:storageClassName:本地存储索赔参考:名称:詹金斯pv索赔名称空间:devops工具容量:存储:10Giaccess模式:-ReadWriteOnce主机路径:路径:/mnt/jenkis_volume

我为上面创建了路径mkdir/mnt/jenkis_volume,并更新了它的文件。

旧:

kind:StorageClassapiVersion:storage.k8s.io/v1元数据:名称:本地存储提供者:kubernetes.io/no-provisionervolumeBindingMode:WaitForFirstConsumer

apiVersion:v1kind:PersistentVolume元数据:名称:詹金斯pv卷标签:类型:本地规格:storageClassName:本地存储索赔参考:名称:詹金斯pv索赔名称空间:devops工具容量:存储:10Giaccess模式:-ReadWriteOnce本地:路径:/mntnodeAffinity:必需:节点选择器条款:-matchExpressions:-密钥:kubernetes.io/hostname运算符:In值:-k8-工人1

相关内容

  • 没有找到相关文章

最新更新