首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes:将本地文件夹挂载到pods时出现问题- "0/1个节点可用:1个节点具有卷节点亲和性冲突。“

Kubernetes:将本地文件夹挂载到pods时出现问题- "0/1个节点可用:1个节点具有卷节点亲和性冲突。“
EN

Stack Overflow用户
提问于 2020-09-09 04:26:17
回答 1查看 1K关注 0票数 2

我尝试挂载一个本地文件夹作为PersistentVolume,并在其中一个pod中使用它,但是这个过程似乎有问题,pod仍然处于"pending“状态。

下面是我的pv yaml文件:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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

我发现pod总是处于"pending“状态:

代码语言:javascript
复制
web-deployment-d498c7f57-4cfbg                                0/1     Pending   0          26m

当我使用"kubectl describe“检查pod状态时,结果如下:

代码语言:javascript
复制
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.

我发现的错误消息是:

代码语言:javascript
复制
  Warning  FailedScheduling  30s (x2 over 30s)  default-scheduler  0/1 nodes are available: 1 node(s) had volume node affinity conflict.

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-09 04:44:42

您似乎没有与您的亲和力要求相匹配的节点。

删除PersistentVolume上的亲和性要求

删除此部件:

代码语言:javascript
复制
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - mlo-node

并且仅使用(并将local更改为hostPath):

代码语言:javascript
复制
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。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63801116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档