K8S-Demo集群實踐:部署私有云盤owncloud(10.6版本)
- 一、下載鏡像
- 二、快速測驗
- 1、啟動容器
- 2、查看日志
- 3、瀏覽器訪問
- 4、退出并洗掉容器
- 三、準備Yaml檔案
- 1、命名空間 owncloud-ns.yaml
- 2、部署 owncloud-deployment.yaml
- 3、服務 owncloud-svc.yaml
- 四、部署
- 1、創建Secret,拉取鏡像需要
- 2、部署
- 五、問題
- 1、拉取鏡像失敗
- 2、第二次安裝或者重建容器時失敗
- 六、參考
一、下載鏡像
[root@harbor ~]# docker pull owncloud/server:10.6
[root@harbor ~]# docker tag owncloud/server:10.6 harbor.demo/owncloud/server:10.6
[root@harbor ~]# docker push harbor.demo/owncloud/server:10.6
- harbor.demo 是部署在集群外的鏡像倉庫
- 查找更多owncloud鏡像 https://hub.docker.com/r/owncloud/server/
二、快速測驗
1、啟動容器
[root@harbor ~]# docker run -d --name aOwncloud -p8080:8080 harbor.demo/owncloud/server:10.6
2、查看日志
[root@harbor ~]# docker logs --follow aOwncloud
Creating volume folders...
Creating hook folders...
Removing custom folder...
Linking custom folder...
Removing config folder...
Linking config folder...
Writing config file...
Fixing base perms...
Fixing data perms...
Fixing hook perms...
Installing server database...
creating sqlite db
ownCloud was successfully installed
ownCloud is already latest version
Writing objectstore config...
Writing php config...
Updating htaccess config...
.htaccess has been updated
Writing apache config...
Enabling cron background...
Set mode for background jobs to 'cron'
Touching cron configs...
Starting cron daemon...
Starting apache daemon...
3、瀏覽器訪問
- 地址:http://harbor.demo:8080

- 登錄owncloud,用戶名 admin 密碼 admin

4、退出并洗掉容器
[root@harbor ~]# docker stop aOwncloud
[root@harbor ~]# docker rm aOwncloud
三、準備Yaml檔案
1、命名空間 owncloud-ns.yaml
apiVersion: v1
kind: Namespace
metadata:
name: owncloud
2、部署 owncloud-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: owncloud-server
namespace: owncloud
spec:
replicas: 1
selector:
matchLabels:
app: owncloud
template:
metadata:
labels:
app: owncloud
spec:
imagePullSecrets:
- name: harbor.demo
containers:
- name: owncloud-server
image: harbor.demo/owncloud/server:10.6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: http
env:
- name: OWNCLOUD_VERSION
value: "10.6"
- name: OWNCLOUD_DB_TYPE
value: mysql
- name: OWNCLOUD_DB_NAME
value: owncloud
- name: OWNCLOUD_DB_USERNAME
value: owncloud
- name: OWNCLOUD_DB_PASSWORD
value: owncloud
- name: OWNCLOUD_DB_HOST
value: 172.16.0.89
- name: OWNCLOUD_DB_PORT
value: "3306"
- name: OWNCLOUD_MYSQL_UTF8MB4
value: "true"
- name: OWNCLOUD_REDIS_ENABLED
value: "true"
- name: OWNCLOUD_REDIS_HOST
value: 172.16.0.89
- name: OWNCLOUD_REDIS_DB
value: "3"
- name: OWNCLOUD_REDIS_PASSWORD
value: "123456"
- name: REDIS_PASSWORD
value: "1234567"
- name: OWNCLOUD_REDIS_PORT
value: "6379"
- name: ADMIN_USERNAME
value: admin
- name: ADMIN_PASSWORD
value: admin
- name: HTTP_PORT
value: "80"
- name: OWNCLOUD_DOMAIN
value: 0.0.0.0
resources:
limits:
memory: 512Mi
requests:
cpu: 500m
memory: 300Mi
- imagePullSecrets 拉取獎項需要的用戶名和密碼資訊,保存在Secret中,下面會創建
- 資料庫使用MySQL,在搭建集群之前就在WIN10上安裝了MySQL5.7,所以一直用
- Redis也是用WIN10上的,如果Redis設定了密碼,則配置引數OWNCLOUD_REDIS_PASSWORD
- Redis資料庫OWNCLOUD_REDIS_DB這里用的是 “3”,不帶引號會報錯
- 更多環境變數引數參考 https://github.com/owncloud-docker/base#available-environment-variables
3、服務 owncloud-svc.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: owncloud
version: v10.6
name: owncloud
namespace: owncloud
spec:
ports:
- nodePort: 30080
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: owncloud
type: NodePort
四、部署
1、創建Secret,拉取鏡像需要
[root@master1 owncloud]# kubectl create secret docker-registry harbor.demo --docker-server=harbor.demo --docker-username=admin --docker-password=Harbor12345 --namespace=owncloud
- 下面的引數可以根據實際情況修改
– Secret名稱harbor.demo
– 服務器:harbor.demo
– 用戶名:admin
– 密碼:Harbor12345
– 命名空間 owncloud
2、部署
[root@master1 owncloud]# kubectl apply -f owncloud-ns.yaml
[root@master1 owncloud]# kubectl apply -f owncloud-deployment.yaml
[root@master1 owncloud]# kubectl apply -f owncloud-svc.yaml
- 簡單的執行,指定目錄,例如 kubectl apply -f /opt/install/owncloud
五、問題
1、拉取鏡像失敗
- 錯誤日志
[root@master1 yaml]# kubectl describe pod/owncloud-server-8b85cf4f9-wrp9c -n owncloud
... ...
Failed to pull image "harbor.demo/owncloud/server:10.6": rpc error: code = Unknown desc = Error response from daemon: pull access denied for harbor.demo/owncloud/server, repository does not exist or may require 'docker login'
Error: ErrImagePull
Back-off pulling image "harbor.demo/owncloud/server:10.6"
Error: ImagePullBackOff
- 從私有倉庫拉取鏡像需要鑒權,檢查secret是否正確,其中的資訊是Base64編碼,可以解碼檢查資訊是否正確
[root@master1 owncloud]# kubectl get secret harbor.demo -o yaml
[root@master1 owncloud]# kubectl get secrets harbor.demo --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d
2、第二次安裝或者重建容器時失敗
- 正確啟動日志
Creating volume folders…
Creating hook folders…
Waiting for MySQL…
services are ready!
Waiting for Redis…
services are ready!
Removing custom folder…
Linking custom folder…
Removing config folder…
Linking config folder…
Writing config file…
Fixing base perms…
Fixing data perms…
Fixing hook perms…
Installing server database…
ownCloud was successfully installed
ownCloud is already latest version
Writing objectstore config…
Writing php config…
Updating htaccess config…
.htaccess has been updated
Writing apache config…
Enabling cron background…
Set mode for background jobs to ‘cron’
Touching cron configs…
Starting cron daemon…
Starting apache daemon…
- 錯誤日志
Installing server database…
The username is already being used
- 原因:在重建容器時觸發初始化
– 參考 https://github.com/owncloud-docker/server/issues/104
– 參考 https://central.owncloud.org/t/upgrade-to-the-username-is-already-being-used/17162/7 - 解決方法,每次安裝或者重啟的時候,環境變數ADMIN_USERNAME隨便寫個值,使用admin賬戶登錄后,洗掉該新建賬戶
六、參考
- https://github.com/owncloud-docker/server
- https://my.oschina.net/u/2306127/blog/2239802
- https://owncloud.com/news/running-owncloud-in-kubernetes-with-rook-ceph-storage-step-by-step/
- https://blog.csdn.net/weixin_34315485/article/details/92211317
- https://github.com/owncloud-docker/server/issues/104
- https://central.owncloud.org/t/upgrade-to-the-username-is-already-being-used/17162/9
- 先用起來,通過操作實踐認識k8s,積累多了自然就理解了
- 把理解的知識分享出來,自造福田,自得福緣
- 追求簡單,容易使人理解
- 知識的背景關系也是知識的一部分,例如版本,時間等
- Jason@vip.qq.com 2021-1-16,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250189.html
標籤:其他
