由于 gogs.io 提供了docker 镜像,我认为使用 kubernetes 在 google 容器引擎上安装它一定很简单。
经过几个小时的折腾,我得到了两个配置文件,因为我在问题帖中看到过它们这里:
问题线程中的文件使用的是 ReplicationController 而不是 pod.. 并且服务也没有使用 LoadBalancer 作为类型 - 我无法通过这种方式让它工作,所以我将它更改为 Pod 和包含 LoadBalancer 的服务,就像在 google 的 wordpress 教程中一样
gogs.yml:
apiVersion: v1
kind: Pod
metadata:
name: gogs
labels:
name: gogs
spec:
containers:
- name: gogs
image: gogs/gogs
ports:
- containerPort: 3000
- containerPort: 22
volumeMounts:
- mountPath: /data
name: data
- name: postgres
image: postgres
ports:
- containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres
env:
- name: POSTGRES_USER
value: "gogs"
- name: POSTGRES_PASSWORD
value: "gogs"
volumes:
- name: data
gcePersistentDisk:
# This disk must already exist.
pdName: gogs-stage-data-disk
fsType: ext4
- name: postgres
gcePersistentDisk:
# This disk must already exist.
pdName: gogs-stage-postgres-disk
fsType: ext4
gogs-service.yml:
apiVersion: v1
kind: Service
metadata:
labels:
name: gogs-frontend
name: gogs-frontend
spec:
type: LoadBalancer
ports:
# The port that this service should serve on.
- port: 80
targetPort: 3000
protocol: TCP
selector:
name: gogs
然后我基本上按照如下步骤进行本教程包含数据和数据库目录的外部磁盘。
创建一个新项目,设置计算区域(gcloud config set..)
创建新集群
gcloud container clusters create gogs-stage --num-nodes 1
创建新的永久磁盘
gcloud compute disks create --size 200GB gogs-stage-data-disk
gcloud compute disks create --size 200GB gogs-stage-postgres-disk
创建 pod
kubectl create -f gogs.yml
创建服务
kubectl create -f gogs-service.yml
现在,在创建 pod 时,当我等待几分钟时,它也不会从“待处理”变为“就绪” - 我检查kubectl get pod gogs
我的设置有什么问题?我该如何检查?我可以使用 ssh 登录。当我查看 /var/log/messages 时,我可以在文件末尾看到一些 docker 错误,内容如下:
aufs au_opts_verify:1570:docker[4711]: dir perm1 breaks the protection by the permission bits on the lower branch
但仅此而已,到目前为止我找不到任何能指引我正确方向的东西。任何帮助都非常感谢 :)
答案1
PGDATA
您还应该使用环境变量指定默认数据目录位置。
尝试这个:
apiVersion: v1
kind: Pod
metadata:
name: gogs
labels:
name: gogs
spec:
containers:
- name: gogs
image: gogs/gogs
ports:
- containerPort: 3000
- containerPort: 22
volumeMounts:
- mountPath: /data
name: data
- name: postgres
image: postgres
ports:
- containerPort: 5432
env:
- name : PGDATA
value: /var/lib/postgresql/data/pgdata
- name: POSTGRES_USER
value: myuser
- name: POSTGRES_PASSWORD
value: mypassword
- name: POSTGRES_DB
value: mydb
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres
volumes:
- name: data
gcePersistentDisk:
pdName: gogs-stage-data-disk
fsType: ext4
- name: postgres
gcePersistentDisk:
pdName: gogs-stage-postgres-disk
fsType: ext4