gpt4 book ai didi

docker - 应用 kubectl 后 pod 卡在挂起状态?

转载 作者:行者123 更新时间:2023-12-04 19:10:27 24 4
gpt4 key购买 nike

在 kubectl apply 后,我的 pod 保持挂起状态。我目前正在尝试部署 3 个服务,它们是 postgres 数据库、api 服务器和应用程序的 ui。postgres pod 运行良好,但其余 2 个服务处于挂起状态。

我尝试创建这样的 yaml 文件

api 服务器持久卷

kind: PersistentVolume
apiVersion: v1
metadata:
name: api-initdb-pv-volume
labels:
type: local
app: api
spec:
storageClassName: manual
capacity:
storage: 1Mi
accessModes:
- ReadOnlyMany
hostPath:
path: "/home/vignesh/pagedesigneryamls/api"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: api-initdb-pv-claim-one
labels:
app: api
spec:
storageClassName: manual
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 1Mi

api服务器

apiVersion: v1
kind: Service
metadata:
name: apiserver
labels:
app: apiserver
spec:

ports:
- name: apiport
port: 8000
targetPort: 8000

selector:
app: apiserver
tier: backend

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: apiserver
labels:
app: apiserver
spec:
selector:
matchLabels:
app: apiserver
tier: backend
strategy:
type: Recreate
template:
metadata:
labels:
app: apiserver
tier: backend
spec:

containers:
- image: suji165475/devops-sample:wootz-backend
name: apiserver
ports:
- containerPort: 8000
name: myport
volumeMounts:
- name: api-persistent-storage-one
mountPath: /usr/src/app
- name: api-persistent-storage-two
mountPath: /usr/src/app/node_modules
volumes:
- name: api-persistent-storage-one
persistentVolumeClaim:
claimName: api-initdb-pv-claim-one
- name: api-persistent-storage-two
persistentVolumeClaim:
claimName: api-initdb-pv-claim-two


docker-compose 文件(仅供引用)

version: "3"

services:
pg_db:
image: postgres
networks:
- wootzinternal
ports:
- 5432
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_USER=postgres
- POSTGRES_DB=wootz
volumes:
- wootz-db:/var/lib/postgresql/data
apiserver:
image: wootz-backend
volumes:
- ./api:/usr/src/app
- /usr/src/app/node_modules
build:
context: ./api
dockerfile: Dockerfile
networks:
- wootzinternal
depends_on:
- pg_db
ports:
- '8000:8000'
ui:
image: wootz-frontend
volumes:
- ./client:/usr/src/app
- /usr/src/app/node_modules
build:
context: ./client
dockerfile: Dockerfile
networks:
- wootzinternal
ports:
- '80:3000'

volumes:
wootz-db:

networks:
wootzinternal:
driver: bridge


当我在 api 服务器 yaml 文件上尝试 kubectl apply 时,api 服务器的 pod 一直处于挂起状态。我该如何解决这个问题。

最佳答案

对于您 future 的问题,如果您需要了解更多关于正在发生的事情的信息,您应该使用 kubectl describe pod_name因为这将为您和我们提供更多信息,并增加获得正确答案的机会。我使用了您的 yaml,并在描述了 pod 之后:

persistentvolumeclaim "api-initdb-pv-claim-two" not found

添加第二个后:
pod has unbound PersistentVolumeClaims (repeated 3 times)

添加第二个 PV 后,它应该开始工作。

您有两个持久卷声明,并且只有一个持久卷。您不能将两个 PVC 绑定(bind)到一个 PV。因此,在这种情况下,您需要将另一个 PV 和另一个 PVC 添加到 list 中。

您可以阅读更多信息 here .

A PersistentVolume (PV) is an atomic abstraction. You can not subdivide it across multiple claims.



更多关于 Persistent Volumes 及其工作原理的信息可以在官方 documentation 中找到。 .

此外,如果您尝试部署 PostgresSQL here是如何做到这一点的好指南。另一个使用托管 Kubernetes 服务会更容易 - how to run HA PostgreSQL on GKE .

关于docker - 应用 kubectl 后 pod 卡在挂起状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com