是否可以将磁盘安装到gke pod和计算引擎

时间:2020-10-08 06:26:23

标签: kubernetes google-cloud-platform google-kubernetes-engine

是否可以将磁盘同时安装到gke pod和计算引擎。

我有一个10 GB的Ubunut磁盘

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-demo
spec:
  capacity:
    storage: 10G
  accessModes:
    - ReadWriteOnce
  claimRef:
    name: pv-claim-demo
  gcePersistentDisk:
    pdName: pv-test1

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-demo
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10G

deploment.yaml

spec:
  containers:
    - image: wordpress
      name: wordpress
      ports:
        - containerPort: 80
          name: wordpress
      volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: /app/logs
  volumes:
    - name: wordpress-persistent-storage
      persistentVolumeClaim:
        claimName: pv-claim-demo

这个想法是将pod生成的日志文件挂载到磁盘,并从计算引擎访问它。 我无法使用NFS或主机路径来解决问题。另一个挑战是多个Pod将写入同一PV。

3 个答案:

答案 0 :(得分:2)

另一个挑战是多个Pod将写入同一PV。

是的,除非您具有类似于NFS的存储类,否则这将无法正常工作。动态配置时,Google Kubernetes Engine中的默认storageClass仅支持access mode ReadWriteOnce-因此只有一个副本可以装载它。

想法是将pod生成的日志文件挂载到磁盘上,然后从计算引擎访问它。

这不是使用Kubernetes的日志的推荐解决方案。 Kubernetes上的应用程序应遵循12 factor principles,并且对于此问题,有一个关于logs的特定项-该应用程序应登录到stdout。对于不遵循12要素原则的应用,可以通过sidecar that tails the log files解决,然后将其打印在stdout上。

打印到stdout的日志通常由平台转发到日志收集系统-即服务。因此,这不是应用程序开发人员需要负责的任何事情。

有关Google Kubernetes Engine中的平台如何处理日志,请参见Google Cloud Operations suite for GKE

答案 1 :(得分:0)

您不能在持久性磁盘上写很多。如果将磁盘设置为只读,则许多磁盘可以读取(但不能写入,与用例不符)。

唯一的解决方案是使用符合NFS的存储。在Google Cloud上,它是filestore service。它是完全根据您的用例设计的,并且您有tutorial for GKE

答案 2 :(得分:0)

最好使用Google Cloud's operations suite for GKE(以前称为StackDriver)。

会有两个API,可用于从GCE访问: