首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Harbor-hlem镜像库重新部署后PV数据恢复

Harbor-hlem镜像库重新部署后PV数据恢复

作者头像
三杯水Plus
发布于 2020-07-16 07:44:19
发布于 2020-07-16 07:44:19
1.3K00
代码可运行
举报
文章被收录于专栏:运维运维
运行总次数:0
代码可运行

起因

开发反馈habor镜像库登陆不了,初步查看是证书过期了。

解决方案 之前Harbor-helm部署镜像库文档可以回顾链接https://minminmsn.com/middleware/698/ 1.首先新建新证书的secret

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]#  kubectl  create secret tls ingress-secret2021 --key minminmsnauto.key --cert minminmsnauto.crt 

2.然后修改harbor-helm的value.yaml,把secretName替换下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]# head -n 20 values.yaml
expose:
  # Set the way how to expose the service. Set the type as "ingress", 
  # "clusterIP" or "nodePort" and fill the information in the corresponding 
  # section
  type: ingress
  tls:
    # Enable the tls or not. Note: if the type is "ingress" and the tls 
    # is disabled, the port must be included in the command when pull/push
    # images. Refer to https://github.com/goharbor/harbor/issues/5291 
    # for the detail.
    enabled: true
    # Fill the name of secret if you want to use your own TLS certificate
    # and private key. The secret must contain keys named tls.crt and 
    # tls.key that contain the certificate and private key to use for TLS
    # The certificate and private key will be generated automatically if 
    # it is not set
    secretName: "ingress-secret2021"
    # By default, the Notary service will use the same cert and key as
    # described above. Fill the name of secret if you want to use a 
    # separated one. Only needed when the type is "ingress".

3.最后使用helm upgrade更新版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]#  helm upgrade  minminmsn . -f values.yaml

到这个时候应该能解决需求,可是事与愿违,不知道哪儿除了问题,这时登陆Harbor证书问题是解决了,但是项目及库访问不了提示内部错误,看Pod的运行状态也都是Running。 最后打算使用helm先delete掉再install,但是这样创建的harbor看起来一切正常,实际上是个初始化环境,是自动生成的新PV并没有原来的数据。此时发现原来的PV还在,下面就开始找PV恢复的方案。

调整PV状态

1.查询此时PV与PVC状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                                            STORAGECLASS   REASON   AGE                    9h
pvc-e7967cfe-7ded-11e9-a09d-52540089b2b6   50Gi       RWO            Retain           Released   default/minminmsn-harbor-chartmuseum                rbd                     417d
pvc-e7974d1c-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Released   default/minminmsn-harbor-jobservice                 rbd                     417d
pvc-e7985b55-7ded-11e9-a09d-52540089b2b6   2000Gi     RWO            Retain           Released   default/minminmsn-harbor-registry                   rbd                     417d
pvc-e7d38097-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Released   default/database-data-minminmsn-harbor-database-0   rbd                     417d
pvc-e7da3f3c-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Released   default/data-minminmsn-harbor-redis-0               rbd                     417d
[root@elasticsearch01 harbor-helm]# kubectl get pvc
NAME                                     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
data-minminmsn-harbor-redis-0               Bound    pvc-6cd422e4-c5f0-11ea-9386-52540089b2b6   20Gi       RWO            rbd            9h
database-data-minminmsn-harbor-database-0   Bound    pvc-6ccda00b-c5f0-11ea-9386-52540089b2b6   20Gi       RWO            rbd            9h
minminmsn-harbor-chartmuseum                Bound    pvc-6c903857-c5f0-11ea-9386-52540089b2b6   50Gi       RWO            rbd            9h
minminmsn-harbor-jobservice                 Bound    pvc-6c91d1a4-c5f0-11ea-9386-52540089b2b6   20Gi       RWO            rbd            9h
minminmsn-harbor-registry                   Bound    pvc-6c92bfc0-c5f0-11ea-9386-52540089b2b6   500Gi      RWO            rbd            9h

2.修改PV状态 先把PV的状态由Released改变成 备注:默认创建的PV的回收策略是Delete就是用完就删除,之前特意把RECLAIM POLICY改为了Retain,在线修改PV回收策略可以参考文档https://minminmsn.com/cloud/1091/。否则这里Helm Delete后就会自动删除PV,就没有后来这篇PV数据恢复操作了。 在线编辑PV,需要把其中claimRef这段删除,这样状态就可以变成Available了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: minminmsn-harbor-chartmuseum
    namespace: default
    resourceVersion: "91736092"
    uid: b31ec8ca-c649-11ea-9386-52540089b2b6
  persistentVolumeReclaimPolicy: Retain

具体如下修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]# kubectl edit pv pvc-e7967cfe-7ded-11e9-a09d-52540089b2b6 
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    pv.kubernetes.io/bound-by-controller: "yes"
    pv.kubernetes.io/provisioned-by: ceph.com/rbd
    rbdProvisionerIdentity: ceph.com/rbd
  creationTimestamp: "2019-05-24T06:33:55Z"
  finalizers:
  - kubernetes.io/pv-protection
  name: pvc-e7967cfe-7ded-11e9-a09d-52540089b2b6
  resourceVersion: "91736100"
  selfLink: /api/v1/persistentvolumes/pvc-e7967cfe-7ded-11e9-a09d-52540089b2b6
  uid: e7ade7f7-7ded-11e9-a09d-52540089b2b6
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 50Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: minminmsn-harbor-chartmuseum
    namespace: default
    resourceVersion: "91736092"
    uid: b31ec8ca-c649-11ea-9386-52540089b2b6
  persistentVolumeReclaimPolicy: Retain
  rbd:
    image: kubernetes-dynamic-pvc-e79b34d3-7ded-11e9-ac1b-02420afe4905
    keyring: /etc/ceph/keyring
    monitors:
    - 10.0.4.8:6789
    pool: rbd-k8s
    secretRef:
      name: ceph-secret
      namespace: default
    user: admin
  storageClassName: rbd
  volumeMode: Filesystem
status:
  phase: Released

3.其他四个PV同样操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]# kubectl edit pv pvc-e7974d1c-7ded-11e9-a09d-52540089b2b6
[root@elasticsearch01 harbor-helm]# kubectl edit pv pvc-e7985b55-7ded-11e9-a09d-52540089b2b6
[root@elasticsearch01 harbor-helm]# kubectl edit pv pvc-e7d38097-7ded-11e9-a09d-52540089b2b6
[root@elasticsearch01 harbor-helm]# kubectl edit pv pvc-e7da3f3c-7ded-11e9-a09d-52540089b2b6

4.查看效果 现在看PV的STATUS已经变成了Available,然后CLAIM也变空了,这样就可以在后面绑定使用了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                       STORAGECLASS   REASON   AGE
pvc-e7967cfe-7ded-11e9-a09d-52540089b2b6   50Gi       RWO            Retain           Available                               rbd                     417d
pvc-e7974d1c-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Available                               rbd                     417d
pvc-e7985b55-7ded-11e9-a09d-52540089b2b6   2000Gi     RWO            Retain           Available                               rbd                     417d
pvc-e7d38097-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Available                               rbd                     417d
pvc-e7da3f3c-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Available                               rbd                     417d

创建PVC

1.先设置好PVC及PV对应关系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 yaml]# cat minminmsn.pvc 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: minminmsn-harbor-registry
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "rbd"
  resources:
    requests:
      storage: 2000Gi
  volumeName: "pvc-e7985b55-7ded-11e9-a09d-52540089b2b6"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: minminmsn-harbor-jobservice
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "rbd"
  resources:
    requests:
      storage: 20Gi
  volumeName: "pvc-e7974d1c-7ded-11e9-a09d-52540089b2b6"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: minminmsn-harbor-chartmuseum
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "rbd"
  resources:
    requests:
      storage: 50Gi
  volumeName: "pvc-e7967cfe-7ded-11e9-a09d-52540089b2b6"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: database-data-minminmsn-harbor-database-0
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "rbd"
  resources:
    requests:
      storage: 20Gi
  volumeName: "pvc-e7d38097-7ded-11e9-a09d-52540089b2b6"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data-minminmsn-harbor-redis-0
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "rbd"
  resources:
    requests:
      storage: 20Gi
  volumeName: "pvc-e7da3f3c-7ded-11e9-a09d-52540089b2b6"

2.创建PVC

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 yaml]# kubectl apply -f minminmsn.pvc 
persistentvolumeclaim/minminmsn-harbor-registry created
persistentvolumeclaim/minminmsn-harbor-jobservice created
persistentvolumeclaim/minminmsn-harbor-chartmuseum created
persistentvolumeclaim/database-data-minminmsn-harbor-database-0 created
persistentvolumeclaim/data-minminmsn-harbor-redis-0 created

3.检查PV与PVC

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 yaml]# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                            STORAGECLASS   REASON   AGE
pvc-e7967cfe-7ded-11e9-a09d-52540089b2b6   50Gi       RWO            Retain           Bound    default/minminmsn-harbor-chartmuseum                rbd                     417d
pvc-e7974d1c-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Bound    default/minminmsn-harbor-jobservice                 rbd                     417d
pvc-e7985b55-7ded-11e9-a09d-52540089b2b6   2000Gi     RWO            Retain           Bound    default/minminmsn-harbor-registry                   rbd                     417d
pvc-e7d38097-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Bound    default/database-data-minminmsn-harbor-database-0   rbd                     417d
pvc-e7da3f3c-7ded-11e9-a09d-52540089b2b6   20Gi       RWO            Retain           Bound    default/data-minminmsn-harbor-redis-0               rbd                     417d
[root@elasticsearch01 yaml]# kubectl get pvc
NAME                                     STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
ceph-rbd-pv-claim                        Bound     ceph-rbd-pv                                20Gi       RWO                           540d
data-minminmsn-harbor-redis-0               Pending   pvc-e7da3f3c-7ded-11e9-a09d-52540089b2b6   0                         rbd            12s
database-data-minminmsn-harbor-database-0   Pending   pvc-e7d38097-7ded-11e9-a09d-52540089b2b6   0                         rbd            12s
minminmsn-harbor-chartmuseum                Pending   pvc-e7967cfe-7ded-11e9-a09d-52540089b2b6   0                         rbd            12s
minminmsn-harbor-jobservice                 Pending   pvc-e7974d1c-7ded-11e9-a09d-52540089b2b6   0                         rbd            12s
minminmsn-harbor-registry                   Bound     pvc-e7985b55-7ded-11e9-a09d-52540089b2b6   2000Gi     RWO            rbd            12s
[root@elasticsearch01 yaml]# kubectl describe pvc minminmsn-harbor-registry
Name:          minminmsn-harbor-registry
Namespace:     default
StorageClass:  rbd
Status:        Bound
Volume:        pvc-e7985b55-7ded-11e9-a09d-52540089b2b6
Labels:        <none>
Annotations:   kubectl.kubernetes.io/last-applied-configuration:
                 {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"minminmsn-harbor-registry","namespace":"default"},"spe...
               pv.kubernetes.io/bind-completed: yes
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      2000Gi
Access Modes:  RWO
VolumeMode:    Filesystem
Events:        <none>
Mounted By:    <none>

使用Hlem重新部署Harbor镜像库

1.部署前先删除版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]# helm delete --purge minminmsn
helm delete --purge minminmsn
release "minminmsn" deleted

2.修改Harbor-helm的values.yaml中PVC相关值 注意existingClaim: ""由空值改成上面生成的PVC名字,注意对应关系,其他不变,具体变更如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
persistence:
  enabled: true
  # Setting it to "keep" to avoid removing PVCs during a helm delete 
  # operation. Leaving it empty will delete PVCs after the chart deleted
  resourcePolicy: "keep"
  persistentVolumeClaim:
    registry:
      # Use the existing PVC which must be created manually before bound
      existingClaim: "minminmsn-harbor-registry"
      # Specify the "storageClass" used to provision the volume. Or the default
      # StorageClass will be used(the default).
      # Set it to "-" to disable dynamic provisioning
      storageClass: "rbd"
      subPath: ""
      accessMode: ReadWriteOnce
      size: 2000Gi
    chartmuseum:
      existingClaim: "minminmsn-harbor-chartmuseum"
      storageClass: "rbd"
      subPath: ""
      accessMode: ReadWriteOnce
      size: 50Gi
    jobservice:
      existingClaim: "minminmsn-harbor-jobservice"
      storageClass: "rbd"
      subPath: ""
      accessMode: ReadWriteOnce
      size: 20Gi
    # If external database is used, the following settings for database will 
    # be ignored
    database:
      existingClaim: "database-data-minminmsn-harbor-database-0"
      storageClass: "rbd"
      subPath: ""
      accessMode: ReadWriteOnce
      size: 20Gi
    # If external Redis is used, the following settings for Redis will 
    # be ignored
    redis:
      existingClaim: "data-minminmsn-harbor-redis-0"
      storageClass: "rbd"
      subPath: ""
      accessMode: ReadWriteOnce
      size: 20Gi

3.重新部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]# helm  install . --name minminmsn
NAME:   minminmsn
LAST DEPLOYED: Wed Jul 15 11:18:13 2020
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/Service
NAME                         TYPE       CLUSTER-IP      EXTERNAL-IP  PORT(S)            AGE
minminmsn-harbor-adminserver    ClusterIP  10.254.58.23    <none>       80/TCP             1s
minminmsn-harbor-chartmuseum    ClusterIP  10.254.154.44   <none>       80/TCP             1s
minminmsn-harbor-clair          ClusterIP  10.254.25.107   <none>       6060/TCP           1s
minminmsn-harbor-core           ClusterIP  10.254.56.153   <none>       80/TCP             1s
minminmsn-harbor-database       ClusterIP  10.254.65.18    <none>       5432/TCP           1s
minminmsn-harbor-jobservice     ClusterIP  10.254.81.97    <none>       80/TCP             1s
minminmsn-harbor-notary-server  ClusterIP  10.254.99.90    <none>       4443/TCP           1s
minminmsn-harbor-notary-signer  ClusterIP  10.254.175.105  <none>       7899/TCP           1s
minminmsn-harbor-portal         ClusterIP  10.254.242.113  <none>       80/TCP             1s
minminmsn-harbor-redis          ClusterIP  10.254.127.40   <none>       6379/TCP           1s
minminmsn-harbor-registry       ClusterIP  10.254.158.222  <none>       5000/TCP,8080/TCP  1s

==> v1/Deployment
NAME                         DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
minminmsn-harbor-adminserver    1        1        1           0          1s
minminmsn-harbor-chartmuseum    1        1        1           0          1s
minminmsn-harbor-clair          1        0        0           0          1s
minminmsn-harbor-core           1        0        0           0          1s
minminmsn-harbor-jobservice     1        0        0           0          1s
minminmsn-harbor-notary-server  1        0        0           0          1s
minminmsn-harbor-notary-signer  1        0        0           0          1s
minminmsn-harbor-portal         1        0        0           0          1s
minminmsn-harbor-registry       1        0        0           0          1s

==> v1/StatefulSet
NAME                    DESIRED  CURRENT  AGE
minminmsn-harbor-database  1        1        1s
minminmsn-harbor-redis     1        1        1s

==> v1beta1/Ingress
NAME                   HOSTS                                                    ADDRESS  PORTS  AGE
minminmsn-harbor-ingress  core-harbor.minminmsn.com,notary-harbor.minminmsn.com  80, 443  1s

==> v1/Pod(related)
NAME                                          READY  STATUS             RESTARTS  AGE
minminmsn-harbor-adminserver-b5d58db8c-wmrbd     0/1    ContainerCreating  0         1s
minminmsn-harbor-chartmuseum-7c6b9d4977-94rhb    0/1    Pending            0         1s
minminmsn-harbor-clair-54465ff7dd-d7bxx          0/1    Pending            0         1s
minminmsn-harbor-core-587cc5d9b5-2xxl9           0/1    Pending            0         1s
minminmsn-harbor-jobservice-764bb697d-wsxqx      0/1    Pending            0         1s
minminmsn-harbor-notary-server-77fbb84fcc-2bw7c  0/1    Pending            0         1s
minminmsn-harbor-notary-signer-8466d68f5b-klv76  0/1    Pending            0         1s
minminmsn-harbor-database-0                      0/1    Pending            0         1s
minminmsn-harbor-redis-0                         0/1    Pending            0         1s

==> v1/Secret
NAME                       TYPE    DATA  AGE
minminmsn-harbor-adminserver  Opaque  4     1s
minminmsn-harbor-chartmuseum  Opaque  1     1s
minminmsn-harbor-core         Opaque  4     1s
minminmsn-harbor-database     Opaque  1     1s
minminmsn-harbor-jobservice   Opaque  1     1s
minminmsn-harbor-registry     Opaque  1     1s

==> v1/ConfigMap
NAME                         DATA  AGE
minminmsn-harbor-adminserver    39    1s
minminmsn-harbor-chartmuseum    24    1s
minminmsn-harbor-clair          1     1s
minminmsn-harbor-core           1     1s
minminmsn-harbor-jobservice     1     1s
minminmsn-harbor-notary-server  5     1s
minminmsn-harbor-registry       2     1s

NOTES:
Please wait for several minutes for Harbor deployment to complete.
Then you should be able to visit the Harbor portal at https://core-harbor.minminmsn.com. 
For more details, please visit https://github.com/goharbor/harbor.

3.查看新生成Pods的信息
[root@elasticsearch01 harbor-helm]# kubectl get pods
NAME                                           READY   STATUS              RESTARTS   AGE
minminmsn-harbor-adminserver-b5d58db8c-wmrbd      0/1     ContainerCreating   0          9s
minminmsn-harbor-chartmuseum-7c6b9d4977-94rhb     0/1     ContainerCreating   0          9s
minminmsn-harbor-clair-54465ff7dd-d7bxx           0/1     Running             0          9s
minminmsn-harbor-core-587cc5d9b5-2xxl9            0/1     Running             0          9s
minminmsn-harbor-database-0                       0/1     Init:0/1            0          9s
minminmsn-harbor-jobservice-764bb697d-wsxqx       0/1     ContainerCreating   0          9s
minminmsn-harbor-notary-server-77fbb84fcc-2bw7c   0/1     ContainerCreating   0          9s
minminmsn-harbor-notary-signer-8466d68f5b-klv76   0/1     ContainerCreating   0          9s
minminmsn-harbor-portal-64cf8b9b69-xm8nl          0/1     ContainerCreating   0          8s
minminmsn-harbor-redis-0                          0/1     ContainerCreating   0          9s
minminmsn-harbor-registry-755746c5bb-q8m55        0/2     ContainerCreating   0          8s

再等2分钟查看就上恢复了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@elasticsearch01 harbor-helm]# kubectl get pods
NAME                                           READY   STATUS    RESTARTS   AGE
jenkins-0                                      1/1     Running   0          62d
rbd-provisioner-67b4857bcd-rjwlg               1/1     Running   0          61d
minminmsn-harbor-adminserver-b5d58db8c-wmrbd      1/1     Running   1          2m33s
minminmsn-harbor-chartmuseum-7c6b9d4977-94rhb     1/1     Running   0          2m33s
minminmsn-harbor-clair-54465ff7dd-d7bxx           1/1     Running   1          2m33s
minminmsn-harbor-core-587cc5d9b5-2xxl9            1/1     Running   1          2m33s
minminmsn-harbor-database-0                       1/1     Running   0          2m33s
minminmsn-harbor-jobservice-764bb697d-wsxqx       1/1     Running   0          2m33s
minminmsn-harbor-notary-server-77fbb84fcc-2bw7c   1/1     Running   0          2m33s
minminmsn-harbor-notary-signer-8466d68f5b-klv76   1/1     Running   0          2m33s
minminmsn-harbor-portal-64cf8b9b69-xm8nl          1/1     Running   0          2m32s
minminmsn-harbor-redis-0                          1/1     Running   0          2m33s
minminmsn-harbor-registry-755746c5bb-q8m55        2/2     Running   0          2m32s

4.Harbor控制验证 证书更新了项目也恢复了 https://core-harbor.minminmsn.com/harbor/projects

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​Kubernetes 集群仓库 harbor Helm3 部署
Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。
高楼Zee
2020/11/30
8.6K1
​Kubernetes 集群仓库 harbor Helm3 部署
kubernetes1.13.1集群集成harbor-helm
https://github.com/goharbor/harbor-helm https://www.hi-linux.com/posts/14136.html https://github.com/kubernetes-incubator/external-storage/tree/master/ceph/rbd https://github.com/kubernetes-incubator/external-storage/tree/master/ceph/rbd/deploy/rbac https://github.com/helm/helm/issues/3130 https://www.kancloud.cn/huyipow/kubernetes/531999 https://www.hi-linux.com/posts/14136.html https://li-sen.github.io/2018/10/08/k8s%E9%83%A8%E7%BD%B2%E9%AB%98%E5%8F%AF%E7%94%A8harbor/
三杯水Plus
2019/03/14
1.6K0
kubernetes1.13.1集群集成harbor-helm
云原生(三十六) | Kubernetes篇之Harbor入门和安装
作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
Lansonli
2022/07/26
1.5K0
云原生(三十六) | Kubernetes篇之Harbor入门和安装
k8s的pv与pvc
PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。
SY小站
2020/06/15
1.3K0
【K8S专栏】Kubernetes数据持久化管理
Kubernetes为了能更好的支持有状态应用的数据存储问题,除了基本的HostPath和EmptyDir提供的数据持久化方案之外,还提供了PV,PVC和StorageClass资源对象来对存储进行管理。
没有故事的陈师傅
2022/09/15
1.3K0
kubernetes 部署 rook+ceph 存储系统
Rook 官网:https://rook.io 容器的持久化存储 容器的持久化存储是保存容器存储状态的重要手段,存储插件会在容器里挂载一个基于网络或者其他机制的远程数据卷,使得在容器里创建的文件,实际上是保存在远程存储服务器上,或者以分布式的方式保存在多个节点上,而与当前宿主机没有任何绑定关系。这样,无论你在其他哪个宿主机上启动新的容器,都可以请求挂载指定的持久化存储卷,从而访问到数据卷里保存的内容。 由于 Kubernetes 本身的松耦合设计,绝大多数存储项目,比如 Ceph、GlusterFS、NFS 等,都可以为 Kubernetes 提供持久化存储能力。 Ceph 分布式存储系统 Ceph 是一种高度可扩展的分布式存储解决方案,提供对象、文件和块存储。在每个存储节点上,您将找到 Ceph 存储对象的文件系统和 Ceph OSD(对象存储守护程序)进程。在 Ceph 集群上,您还可以找到 Ceph MON(监控)守护程序,它们确保 Ceph 集群保持高可用性。 Rook Rook 是一个开源的 cloud-native storage 编排, 提供平台和框架;为各种存储解决方案提供平台、框架和支持,以便与云原生环境本地集成。 Rook 将存储软件转变为自我管理、自我扩展和自我修复的存储服务,它通过自动化部署、引导、配置、置备、扩展、升级、迁移、灾难恢复、监控和资源管理来实现此目的。 Rook 使用底层云本机容器管理、调度和编排平台提供的工具来实现它自身的功能。 Rook 目前支持 Ceph、NFS、Minio Object Store 和 CockroachDB。
jwangkun
2021/12/23
4.2K1
kubernetes 部署 rook+ceph 存储系统
在 Kubernetes 中部署高可用 Harbor 镜像仓库
Harbor 是一个开放源代码容器镜像注册表,可通过基于角色权限的访问控制来管理镜像,还能扫描镜像中的漏洞并将映像签名为受信任。Harbor 是 CNCF 孵化项目,可提供合规性,性能和互操作性,以帮助跨 Kubernetes 和 Docker 等云原生计算平台持续,安全地管理镜像。
米开朗基杨
2021/01/12
2.4K1
Kubernetes K8S之存储Volume详解 PV概述PVC概述供应绑定使用持久化声明保护回收策略Persistent Volumes类型PV示例PV卷状态PV
与管理计算实例相比,管理存储是一个明显的问题。PersistentVolume子系统为用户和管理员提供了一个API,该API从如何使用存储中抽象出如何提供存储的详细信息。为此,我们引入了两个新的API资源:PersistentVolume和PersistentVolumeClaim。
踏歌行
2020/10/29
3.2K0
Kubernetes K8S之存储Volume详解
    




        PV概述PVC概述供应绑定使用持久化声明保护回收策略Persistent Volumes类型PV示例PV卷状态PV
5. 死磕 k8s系列之安装docker私仓(harbor)
harbor是VMWare出品的一款非常优秀的docker私仓管理工具,它不仅提供了基础的镜像存储、权限控制等功能,还提供了镜像同步等高级功能。
彤哥
2020/02/11
3.3K0
K8s上用Ceph-rbd存储
k8s默认使用的本地存储,集群容灾性差,ceph作为开源的分布式存储系统,与openstack环境搭配使用,已经很多云计算公司运用于生产环境,可靠性得到验证。这里介绍一下在k8s环境下ceph如何使用.
院长技术
2020/06/11
2K0
kubernetes系列教程(十)深入学习持久化存储PV和PVC
上一篇文章中kubernetes系列教程(九)初识Pod存储管理介绍了kubernetes中存储Volume的使用,volume支持多种不同的内置驱动,使用volumes需要知道后端驱动的细节,使用起来不方便,因此社区提出了PV概念,即通过管理员定义好PV,通过PVC使用PV;随着PV数量的不断增加,管理员需要频繁定义PV,因此提出了动态存储StorageClass,通过PVC中调用StorageClass动态创建PV,接下来介绍kubernetes系列教程高级进阶PV/PVC。
HappyLau谈云计算
2019/10/12
4.3K0
kubernetes系列教程(十)深入学习持久化存储PV和PVC
(2 / 3)CentOS搭建K8s微服务20条
registry和image是修改镜像仓库和镜像名为阿里云的仓库(该仓库为个人用户仓库)。官方镜像国内网络基本拉取不下来,默认配置使用Deployment控制器,副本数为1。你可以修改为DaemonSet,每个节点部署一个pod,此处使用nodeSelector将ingress控制器固定在master上
老张的哲学
2023/01/09
2.4K0
Helm安装harbor2.4版本(集成helm chart包管理)
4、去官网下载对应安装版本的helm包的value.yaml文件,这里以helm包V1.8.0版本为例(对应app版本为V2.4.0)
dufu
2024/08/01
3720
TKE上搭建企业级镜像仓库Harbor
本次我们来讲解下如何在TKE上搭建企业级镜像仓库Harbor,这里我们采用的是helm方式部署到TKE集群上,helm部署的harbor会通过ingress暴露前端页面提供访问,一般我们需要通过域名的https方式来访问Harbor仓库,所以我们需要做如下准备:
聂伟星
2021/01/09
1.7K0
rook使用教程,快速编排ceph
在cluster/examples/kubernetes 目录下,官方给了个worldpress的例子,可以直接运行一下:
sealyun
2019/07/25
1.1K0
sealos+rook 部署 kubeSphere+TiDB
最近 CNCF 宣布 rook 毕业,kubeSphere 正好也发布了 3.0.0 版本,由于 rancher 开源的 longhorn 还处于孵化阶段,不太适合生产环境使用,这次使用 rook 作为 kubeSphere 底层存储快速搭建一个生产可用的容器平台。
米开朗基杨
2020/10/30
1.9K0
sealos+rook 部署 kubeSphere+TiDB
研发工程师玩转Kubernetes——local型PV和PVC绑定过程中的状态变化
PV全称是PersistentVolume,即持久卷,是由管理员事先准备好的资源。它可以是本地磁盘,也可以是网络磁盘。 PVC全称是PersistentVolumeClaim,即持久卷申领。它表示卷的使用者,对PV的申请。即我们可以认为,PV是整体,PVC是申请其中的部分。
方亮
2023/08/10
6110
Rook带你玩转云原生存储
First thing first,Rook is not a CSI driver. —— 首先,Rook不是一个容器存储驱动。
nevermosby
2020/05/11
4.1K0
Kubernetes 部署 Wordpress+MySQL
这部分我们结合之前的 k8s 知识点给大家展示如何使用 kubernetes 部署 wordpress+MySQL, 并利用 NFS 去保存我们容器的源代码以及 DB 数据.
jwangkun
2021/12/23
1K0
Kubernetes 部署 Wordpress+MySQL
Harbor边缘部署文档
若使用http提供服务,则需要修改Docker配置文件并重启,故使用https提供服务,故需配置tls
用户9350068
2022/03/06
1.5K0
推荐阅读
相关推荐
​Kubernetes 集群仓库 harbor Helm3 部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档