欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Harbor如何快速部署到Kubernetes集群

這篇文章主要講解了“Harbor如何快速部署到Kubernetes集群”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Harbor如何快速部署到Kubernetes集群”吧!

潁泉ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

1、快速安裝

Harbor可以支持容器部署和Kubernetes部署。從Harbor 1.6開始,項目提供了Kubernetes的集群化部署方法,可以使用Helm(https://github.com/goharbor/harbor-helm)快速進行部署,基于Kubernetes集群管理機制進行動態(tài)調(diào)度。如下:

git clone https://github.com/goharbor/harbor-helm
cd harbor-helm
git checkout master

helm install --namespace harbor --name harbor .

2、部署技巧

但是,對于多節(jié)點的Kubernetes集群來說,還需要解決幾個問題:

  • 鏡像下載。因為Harbor使用的容器鏡像多達10個(其中registry會用到多個容器鏡像),會被集群分別調(diào)度到多個節(jié)點上運行,需要保證所有的節(jié)點都有需要的容器鏡像,會帶來大量的下載流量,完整運行起來的時間比較長。最好是在一個節(jié)點上下載,然后上傳到所有節(jié)點。

  • 網(wǎng)絡(luò)存儲。在Kubernetes集群中pod是可以漂移的,需要保證漂移后的容器仍然能夠連續(xù)訪問存儲。

  • 登陸問題。Kubernetes提供了多種服務(wù)暴露方法,但目前NodePort等的授權(quán)與后臺服務(wù)會不一致,從而登錄失敗,提示“ 不正確的用戶名或密碼”。

2.1 鏡像下載

使用下面的腳本預(yù)先下載鏡像:

echo "Pull images for Harbor:dev"
echo ""

docker pull goharbor/harbor-core:dev #
docker pull goharbor/harbor-portal:dev #
docker pull goharbor/harbor-jobservice:dev #

docker pull goharbor/clair-photon:dev  #
docker pull goharbor/notary-server-photon:dev #
docker pull goharbor/notary-signer-photon:dev #
 
docker pull goharbor/registry-photon:dev #
docker pull goharbor/harbor-registryctl:dev #
docker pull goharbor/chartmuseum-photon:dev #

docker pull goharbor/harbor-db:dev #
docker pull goharbor/redis-photon:dev #

echo "Finished."

運行 Helm的安裝命令(命名空間為harbor):

helm install --namespace harbor --name harbor .

查看安裝后的pod,運行:

kubectl get pod -n harbor

運行的pod實例如下:

NAME                                           READY   STATUS    RESTARTS   AGE
harbor-harbor-chartmuseum-5d8895d9dc-c76mx     1/1     Running   1          9h
harbor-harbor-clair-7995586c44-8p98g           1/1     Running   1          9h
harbor-harbor-core-9999c79ff-db2fl             1/1     Running   0          9h
harbor-harbor-database-0                       1/1     Running   0          9h
harbor-harbor-jobservice-65f6dbdc78-h82nb      1/1     Running   1          9h
harbor-harbor-notary-server-77774bb46f-jzsgx   1/1     Running   2          9h
harbor-harbor-notary-signer-5c94f5844c-8gpp8   1/1     Running   2          9h
harbor-harbor-portal-85dbb47c4f-xbnzz          1/1     Running   0          9h
harbor-harbor-redis-0                          1/1     Running   0          9h
harbor-harbor-registry-b8bd76fc7-744fs         2/2     Running   0          9h

但是,剛安裝完的時候,由于存儲和登陸問題存在,上面的pod有很多是出于失敗狀態(tài)的,我這里顯示的是解決完這些問題以后的pod運行情況。

2.2 網(wǎng)絡(luò)存儲

Harbor可以使用本地存儲、外置存儲或者網(wǎng)絡(luò)存儲。

本地存儲

如果使用本地存儲,需要指定Harbor服務(wù)pod運行在存儲所在的節(jié)點上(或者是單節(jié)點的Kubernetes集群)。

具體配置文件的參考 https://github.com/openthings/kubernetes-tools/harbor/hostpath,下面給出redis的例子:

  • 創(chuàng)建Redis的存儲pv配置文件:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: data-harbor-harbor-redis-0
  namespace: harbor
spec:
  capacity:
    storage: 8Gi
  accessModes:
    - ReadWriteMany
  hostPath:
    path: /home/supermap/harbor/data-harbor-harbor-redis-0
  • 創(chuàng)建Redis的存儲pvc配置文件:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: data-harbor-harbor-redis-0
  namespace: harbor
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 8Gi
網(wǎng)絡(luò)存儲

我這里是直接從GlusterFS創(chuàng)建的pvc,也可以使用NFS或Ceph之類的網(wǎng)絡(luò)可訪問存儲,包括性能比較好的NAS/iSCSI/IPSAN等系統(tǒng)。

  • 首先創(chuàng)建endpoint,然后創(chuàng)建pv和pvc。

  • 與本地存儲類似,但是可以提供pod在網(wǎng)絡(luò)范圍內(nèi)的可遷移訪問。

  • 具體配置文件參考 https://github.com/openthings/kubernetes-tools/harbor/zettariver。

按照推薦的方法,可以通過helm install來指定存儲設(shè)備的參數(shù),或者修改value.yaml文件來指定存儲的使用方式。我這里沒有修改原始參數(shù),等創(chuàng)建pod結(jié)束后,將所有的pvc刪除,重新創(chuàng)建,然后等待pod重啟后運行成功。腳本如下:

echo "Delete pvc..."
kubectl delete -n harbor pvc/data-harbor-harbor-redis-0
kubectl delete -n harbor pvc/database-data-harbor-harbor-database-0
kubectl delete -n harbor pvc/harbor-harbor-chartmuseum
kubectl delete -n harbor pvc/harbor-harbor-jobservice
kubectl delete -n harbor pvc/harbor-harbor-registry
echo ""

echo "Create pvc..."
kubectl apply -f 0a-glusterfs-gvzr00-endpoint.yaml
kubectl apply -f 0b-glusterfs-gvzr00-service.yaml

kubectl apply -f 1a-pv-data-harbor-harbor-redis-0.yaml
kubectl apply -f 1b-pvc-data-harbor-harbor-redis-0.yaml

kubectl apply -f 2a-pv-database-data-harbor-harbor-database-0.yaml
kubectl apply -f 2b-pvc-database-data-harbor-harbor-database-0.yaml

kubectl apply -f 3a-pv-harbor-harbor-chartmuseum.yaml
kubectl apply -f 3b-pvc-harbor-harbor-chartmuseum.yaml

kubectl apply -f 4a-pv-harbor-harbor-jobservice.yaml
kubectl apply -f 4b-pvc-harbor-harbor-jobservice.yaml

kubectl apply -f 5a-pv-harbor-harbor-registry.yaml
kubectl apply -f 5b-pvc-harbor-harbor-registry.yaml

echo "Finished."

幾個問題的記錄:

  • 使用endpoint方法訪問glusterfs,其中一些pod總是運行不成功。

    • 參考:Kubernetes中掛載GlusterFS的volume

  • 采用mount glusterfs卷為本地卷,再創(chuàng)建pvc給harbor使用,就可以了(需要設(shè)定nodeSelector為固定節(jié)點)。

    • 參考:分布式存儲系統(tǒng)GlusterFS最新版本安裝

    • 但是,容器harbor-harbor-database-0除外,必須存儲在非GlusterFS的存儲設(shè)備上。原因如下。

  • 經(jīng)試驗,容器harbor-harbor-database-0不能部署在GlusterFS卷上,數(shù)據(jù)pvc為database-data-harbor-harbor-database-0。

    • PostgreSQL錯誤,https://stackoverflow.com/questions/46852123/error-in-performance-test-postgresql-and-glusterfs

    • GlusterFS不支持結(jié)構(gòu)化數(shù)據(jù),https://docs.gluster.org/en/latest/Install-Guide/Overview/#is-gluster-going-to-work-for-me-and-what-i-need-it-to-do

    • 因為GlusterFS不支持PostgreSQL的結(jié)構(gòu)化數(shù)據(jù):

    • 臨時解決辦法:將database-data-harbor-harbor-database-0卷放在物理磁盤上,容器harbor-harbor-database-0部署在同一個節(jié)點上。

  • 采用heketi部署glusterfs方法,暫未測試。

    • 參考:GlusterFS-動態(tài)卷快速應(yīng)用

  • 采用NFS訪問部署haorbor,或者glusterfs的NFS服務(wù)接口部署harbor,暫未測試。

    • 參考:GlusterFS的客戶端訪問和NFS設(shè)置

下面列出正常運行后,Harbor對于存儲的使用情況,目前用到了5個pvc虛擬存儲卷:

kubectl get pvc -n harbor

NAME                                     STATUS   VOLUME                                   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
data-harbor-harbor-redis-0               Bound    data-harbor-harbor-redis-0               8Gi        RWX                           9h
database-data-harbor-harbor-database-0   Bound    database-data-harbor-harbor-database-0   16Gi       RWX                           9h
harbor-harbor-chartmuseum                Bound    harbor-harbor-chartmuseum                8Gi        RWX                           9h
harbor-harbor-jobservice                 Bound    harbor-harbor-jobservice                 8Gi        RWX                           9h
harbor-harbor-registry                   Bound    harbor-harbor-registry                   8Gi        RWX                           9h

如果在Kubernetes中pv/pvc運行失敗,則需要檢查存儲的容量和路徑是否設(shè)置正確,請修改之,確保存儲完全可用。

2.3 登陸問題

系統(tǒng)默認安裝參數(shù)是使用Ingress提供服務(wù)入口的。雖然文檔中說明可以使用nodePort和LoadBalancer來設(shè)置服務(wù)harbor-harbor-portal的類型,但實際操作中發(fā)現(xiàn),輸入賬號 admin和密碼Harbor12345后,始終會提示 “賬號會密碼不正確”,導(dǎo)致無法正常登陸到系統(tǒng)。

  • 問題報告和解決辦法參見:

    • Invalid user name or password,https://github.com/goharbor/harbor-helm/issues/75

我使用Ingress(需要提前安裝)來提供服務(wù),還需要修改Ingress的規(guī)則。

安裝Ingress,執(zhí)行:

  • 腳本和配置參見:github.com/openthings/kubernetes-tools/ingress

helm install ./nginx-ingress --name nginx-ingress \
	--namespace ingress \
	--set controller.stats.enabled=true

在Kubernetes的Dashboard中,選擇“服務(wù)發(fā)現(xiàn)與負載均衡”,選中“訪問權(quán)”里的Ingress規(guī)則,點擊“編輯”。

將其中的host修改為自己的主機域名,如下:

"rules": [
      {
        "host": "localhost",
        "http": {
          "paths": [
            {
              "path": "/",
              "backend": {
                "serviceName": "harbor-harbor-portal",
                "servicePort": 80
              }
            },
            {
              "path": "/api/",
              "backend": {
                "serviceName": "harbor-harbor-core",
                "servicePort": 80
              }
            },
            {
              "path": "/service/",
              "backend": {
                "serviceName": "harbor-harbor-core",
                "servicePort": 80
              }
            },
            {
              "path": "/v2/",
              "backend": {
                "serviceName": "harbor-harbor-core",
                "servicePort": 80
              }
            },
            {
              "path": "/chartrepo/",
              "backend": {
                "serviceName": "harbor-harbor-core",
                "servicePort": 80
              }
            },
            {
              "path": "/c/",
              "backend": {
                "serviceName": "harbor-harbor-core",
                "servicePort": 80
              }
            }
          ]
        }
      },

注意:

  • 我上面的host設(shè)為了localhost,只能允許本地訪問,其它機器連接進來是無法訪問的。

  • 可以設(shè)為外部域名或者將其它機器名稱加入/etc/hosts,或者IP地址,就可以提供外部訪問了。

    • The IP is ingress node.

3、Docker客戶端訪問

首先從Harbor的管理界面“系統(tǒng)管理”-“配置管理”-“系統(tǒng)設(shè)置”,選擇“鏡像庫根證書”-“下載”,將下載后的文件保存到需要訪問Harbor服務(wù)的客戶端。然后,需要完成Docker的證書配置,登陸到Harbor服務(wù)器,就可以推送/下載自己的鏡像了。

在客戶端:

  • 將ca.crt 復(fù)制到 docker 客戶端的 /etc/docker/certs.d/yourdomain.com(registry服務(wù)器的IP)。例如:

#獲取ca.crt文件,如果目錄不存在,則需要預(yù)先手動創(chuàng)建之。 
sudo scp user@192.168.1.8:~/docker/ca.crt /etc/docker/certs.d/192.168.1.8/
  • 重新啟動Docker。

sudo systemctl restart docker
  • 使用docker tag重新命名容器鏡像。如:

docker tag goharbor/harbor-portal:dev core.harbor.domain/library/harbor-portal:dev
  • 從命令行登陸到Harbro服務(wù)器(輸入賬號:admin/Harbor12345,或者自建的賬號):

docker login core.harbor.domain
  • 推送鏡像到Harbor服務(wù)器:

docker push core.harbor.domain/library/harbor-portal:dev
  • HTTPS服務(wù)和客戶端的詳細配置,請參考:https://my.oschina.net/u/2306127/blog/785281

感謝各位的閱讀,以上就是“Harbor如何快速部署到Kubernetes集群”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Harbor如何快速部署到Kubernetes集群這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

標(biāo)題名稱:Harbor如何快速部署到Kubernetes集群
瀏覽路徑:http://aaarwkj.com/article32/pjccsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、小程序開發(fā)品牌網(wǎng)站設(shè)計、網(wǎng)站內(nèi)鏈、外貿(mào)建站微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
香蕉伊蕉伊中文在线视频| 日本人妻在线不卡视频| 91精品麻豆国产自产在线| 婷婷色综合一区二区三区| 黄色大全欧美在线观看| 国产一区二区精品日韩| 看看美女阴逼毛茸茸的| 欧美大片高清在线观看| 婷婷亚洲五月伊人91| 久久热精品视频这里有| 欧美十八一区二区三区| 97资源视频在线播放| 精品一区二区三区推荐| 国产乱码精品一区二区三区爽爽爽| 国产精品一区久久91| 欧美在线免费黄片视频| 日韩二区三区在线视频| 久久久国产精品视频网站| 五月婷婷色丁香综合激情| 91九色国产成人久久精品| 日韩人妻有码中文字幕| 欧美老熟妇子乱视频在线| 在线视频日韩欧美国产二区| 亚洲欧美高清一区二区| 国产剧情av色诱女教师| 亚洲av在线视频免费播放| 91午夜福利视频免费播放| 久久久人妻精品一区二区三区四区| 高清日韩精品视频在线观看| 伊人亚洲一区二区三区| 日韩高清在线不卡视频| av资源在线观看少妇丰满| 日本一区二区裸体视频| 丰满肥臀熟女高清区二区| 久久综合婷婷亚洲色图| 欧美精品一区二区亚洲| 午夜在线成人免费观看| 亚洲毛片免费视频久久| 午夜麻豆影网在线观看| 91国产性感美女视频| 黄片免费在线播放欧美|