k8s部署harbor

Kubernetes(简称k8s)是一个开源的容器编排系统,用于自动化应用程序容器的部署、扩展和管理,Harbor是一个企业级的Docker Registry,可以帮助开发者和团队更好地管理和分发他们的容器镜像,本文将介绍如何在Kubernetes上部署Harbor。

一、准备工作

在开始部署Harbor之前,需要确保以下几点:

k8s部署harbor

1. 安装并配置好Kubernetes集群,可以参考官方文档(-environment/tools/kubeadm/install-kubeadm/)进行安装。

2. 安装Docker和Docker Compose,Harbor依赖于Docker来运行和管理容器,因此需要在Kubernetes集群中安装Docker,还需要安装Docker Compose,用于管理多个容器的应用。

3. 准备Harbor的安装包,可以从Harbor的GitHub仓库()下载最新版本的Harbor安装包。

二、部署Harbor

1. 将Harbor安装包上传到Kubernetes集群中的一个节点上,可以使用`kubectl cp`命令将文件从本地复制到Kubernetes集群中。

k8s部署harbor

kubectl cp harbor-offline-installer.tar.gz my-node:/tmp/harbor-offline-installer.tar.gz

2. 在Kubernetes集群中创建一个名为`harbor-installation`的Namespace,用于存放Harbor相关的资源:

kubectl create namespace harbor-installation

3. 使用`kubectl apply`命令将Harbor的离线安装包应用到Kubernetes集群中,创建一个名为`harbor`的Deployment和一个名为`harbor-service`的Service:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: harbor
spec:
  replicas: 1
  selector:
    matchLabels:
      app: harbor
  template:
    metadata:
      labels:
        app: harbor
    spec:
      containers:
      - name: harbor
        image: harbor-offline-installer/harbor-online-installer # 这里替换为实际的镜像名称和标签
        command: ["/bin/sh", "-c"]
        args: ["|"${HARBOR_PREFIX}/bin/docker pull registry && ${HARBOR_PREFIX}/bin/docker run --name=${HARBOR_REGISTRY_NAME} --restart=always -d --net=host --privileged=true --volume=${PWD}:/data --env=REGISTRY_HTTP_ADDR=0.0.0.0:5000 --env=REGISTRY_HTTPS_ADDR=0.0.0.0:443 --env=REGISTRY_STORAGE_DRIVER=overlay2 --env=REGISTRY_STORAGE_PATH=/data --env=REGISTRY_AUTH=none --env=REGISTRY_SSL_ENABLED=false"] # 这里替换为实际的环境变量设置
        env: []
        volumeMounts:
        - name: datastore
          mountPath: /data
      - name: docker-composer-runner
        image: busybox:latest
        command: ["sh", "-c", "sleep infinity"] # 这里可以替换为实际的启动命令,例如运行Harbor的Compose文件等
        volumeMounts:
        - name: datastore
          mountPath: /var/run/docker.sock # 这里可以替换为实际的挂载路径,例如挂载宿主机的Docker套接字等
        ports: [80] # 这里可以替换为实际需要暴露的端口列表,例如80、443等端口
---
apiVersion: v1
kind: Service
metadata:
  name: harbor-service
spec:
  selector:
    app: harbor
  ports:
    - protocol: TCP
      port: 80 # 这里可以替换为实际需要暴露的端口列表,例如80、443等端口
      targetPort: 80 # 这里可以替换为实际需要映射的端口列表,例如80、443等端口

4. 等待一段时间,让Harbor的Deployment和Service正常运行起来,可以使用以下命令查看Deployment的状态和Service的信息:

```bash

k8s部署harbor

kubectl get deployments harbor-status # 这里可以替换为实际的Deployment名称,例如harbor-master、harbor-worker等状态检查相关命令;kubectl get services harbor-service # 这里可以替换为实际的Service名称,例如kubectl get services harbor-service | grep ClusterIP # 这里可以替换为实际的服务信息查询相关命令;kubectl logs # 这里可以替换为实际的Pod名称,例如kubectl logs harbor-service-xxxxxxx # 这里可以替换为实际的日志查询相关命令;kubectl describe pod # 这里可以替换为实际的Pod名称,例如kubectl describe pod harbor-service-xxxxxxx # 这里可以替换为实际的Pod描述信息查询相关命令;kubectl exec -- sh # 这里可以替换为实际的Pod名称,例如kubectl exec harbor-service-xxxxxxx -- sh # 这里可以替换为实际的Shell命令执行相关命令;kubectl port-forward : # 这里可以替换为实际的Pod名称和端口映射关系,例如kubectl port-forward harbor-service-xxxxxxx 8000:80 # 这里可以替换为实际的端口映射关系查询相关命令;kubectl top pods # 这里可以替换为实际的Pod名称,例如kubectl top pods | grep # 这里可以替换为实际的Pod资源监控相关命令;kubectl get events # 这里可以替换为实际的事件查询相关命令;kubectl get nodes # 这里可以替换为实际的节点信息查询相关命令;kubectl get configmaps # 这里可以替换为实际的ConfigMap信息查询相关命令;kubectl get secrets # 这里可以替换为实际的Secret信息查询相关命令;kubectl get services # 这里可以替换为实际的Service信息查询相关命令;kubectl get deployments # 这里可以替换为实际的Deployment信息查询相关命令;kubectl get pods # 这里可以替换为实际的Pod信息查询相关命令;kubectl get hpa # 这里可以替换为实际的Horizontal Pod Autoscaler信息查询相关命令;kubectl get pvc # 这里可以替换为实际的Persistent Volume Claim信息查询相关命令;kubectl get statefulsets # 这里可以替换与实际StatefulSet信息查询相关命令;kubectl get ingresses # 这里可以替换与实际Ingress信息查询相关命令;kubectl get routes # 这里可以替换与实际Route信息查询相关命令;kubectl get persistentvolumeclaims # 这里可以替换与实际PersistentVolumeClaim信息查询相关命令;kubectl get secretkeys # 这里可以替换与实际SecretKey信息查询相关命令;kubectl get configmapkeys # 这里可以替换与实际ConfigMapKey信息查询相关命令;kubectl get podtemplatespecs # 这里可以替换与实际PodTemplateSpec信息查询相关命令,kubectl describe pods # 这里可以替换与实际Pod描述信息查询相关命令;kubectl describe deployments # 这里可以替换与实际Deployment描述信息查询相关命令;kubectl describe hpa # 这里可以替换与实际Horizontal Pod Autoscaler描述信息查询相关命令;kubectl describe pvc # 这里可以替换与实际Persistent Volume Claim描述信息查询相关命令;kubectl describe statefulsets # 这里可以替换与实际StatefulSet描述信息查询相关命令;kubectl describe ingresses # 这里可以替换与实际Ingress描述信息查询相关命令;kubectl describe routes # 这里可以替换与实际Route描述信息查询相关命令;kubectl describe persistentvolumeclaims # 这里可以替换与实际PersistentVolumeClaim描述信息查询相关命令;kubectl describe secretkeys # 这里可以替换与实际SecretKey描述信息查询相关命令;kubectl describe configmapkeys # 这里可以替换与实际ConfigMapKey描述信息查询相关命令;kubectl describe podtemplatespecs # 这里可以代替与actual PodTemplateSpec描述信息查询相关命令

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/57823.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2023-11-28 11:24
Next 2023-11-28 11:28

相关推荐

  • 深入了解KubeSphere:基于Kubernetes的多租户容器平台

    KubeSphere是一款基于Kubernetes的开源容器平台,它提供了一种简单、高效的方式来管理和部署Kubernetes集群,KubeSphere的目标是为企业提供一个一站式的解决方案,包括应用开发、部署、运维和监控等。KubeSphere的核心组件包括KubeSphere Server、KubeSphere Console、K……

    2023-12-07
    0136
  • kubeadm延长证书时间的方法是什么「kubeadm证书续期」

    在Kubernetes集群中,kubeadm是用于快速部署一个或多个Master节点的工具,由于证书的有效期限制,我们需要定期更新证书以确保集群的安全和稳定,本教程将介绍如何延长kubeadm生成的证书时间。我们需要了解kubeadm生成的证书类型,kubeadm会为每个节点生成以下四种类型的证书:1. kubelet证书:用于节点上……

    2023-11-16
    0206
  • 怎么用Kubernetes的configmap通过环境变量注入到pod里

    Kubernetes的ConfigMap是一种用于存储非机密性配置信息的资源对象,它可以包含键值对、文件或者目录,并且可以在Pod中以环境变量的形式进行注入,本文将详细介绍如何使用Kubernetes的ConfigMap通过环境变量注入到Pod里。创建ConfigMap我们需要创建一个ConfigMap,可以使用kubectl cre……

    2023-12-18
    0125
  • 如何分析kubernetes中的api聚合机制设计

    Kubernetes(简称k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序,在k8s中,API聚合机制是一种设计模式,用于将多个API资源组合成一个统一的资源对象,这种设计模式可以简化客户端代码,提高开发效率,同时也可以方便地对API资源进行管理和维护,本文将详细介绍如何分析kubernetes中的api聚合……

    2023-11-24
    0129
  • kubernetes 升级

    升级kubeadm/kubectl/kubelet版本和升级Kubernetes集群的方法在现代的IT环境中,Kubernetes已经成为了管理容器化应用的首选平台,随着技术的发展,我们需要定期升级Kubernetes的各个组件,以获得更好的性能、安全性和功能,本文将介绍如何升级kubeadm、kubectl和kubelet版本,以及……

    2023-12-31
    098
  • 如何在Kubernetes中使用mantissa_创建StatefulSet?

    在Kubernetes中,要创建StatefulSet,可以使用以下YAML文件作为示例:,,``yaml,apiVersion: apps/v1,kind: StatefulSet,metadata:, name: mantissa,spec:, serviceName: "mantissa", replicas: 3, selector:, matchLabels:, app: mantissa, template:, metadata:, labels:, app: mantissa, spec:, containers:, name: mantissa, image: mantissa_image, ports:, containerPort: 8080,`,,请将mantissa_image`替换为您要使用的镜像名称。

    2024-08-19
    052

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入