• 云原生Kubernetes:K8S集群使用带凭证的harbor仓库


    目录

    一、理论

    1.部署harbor 创建私有项目,使用凭证登录

    二、实验

    1.部署harbor 创建私有项目,使用凭证登录

    三、问题

    1.harbor页面无法打开

    2.生成harbor 登录凭据资源清单报错

    3.tomcat-deployment 资源生成报错


    一、理论

    1.部署harbor 创建私有项目,使用凭证登录

    (1)在docker harbor 上(192.168.204.176)上环境准备

    1. systemctl stop firewalld.service
    2. systemctl disable firewalld.service
    3. setenforce 0
    4. yum install -y yum-utils device-mapper-persistent-data lvm2
    5. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    6. yum install -y docker-ce
    7. systemctl start docker.service
    8. systemctl enable docker.service
    9. docker version

    (2)部署harbor

    1. #上传 docker-compose 和 harbor-offline-installer-v1.2.2.tgz 到 /opt 目录中
    2. cd /opt
    3. chmod +x docker-compose
    4. mv docker-compose /usr/local/bin/
    5. #部署 Harbor 服务
    6. tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
    7. vim +5 /usr/local/harbor/harbor.cfg
    8. --5行--修改,设置为Harbor服务器的IP地址或者域名
    9. hostname = 192.168.204.176
    10. cd /usr/local/harbor/
    11. ./install.sh

    (3)登录harbor,创建项目

    1. /#在 Harbor 中创建一个新项目
    2. (1)浏览器访问:http://192.168.204.176 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345
    3. (2)输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮
    4. (3)填写项目名称为“david-project”,点击“确定”按钮,创建新项目

    (4)每个node节点登录harbor ,上传镜像

    1. #在每个 node 节点配置连接私有仓库(注意每行后面的逗号要添加)
    2. cat > /etc/docker/daemon.json <<EOF
    3. {
    4. "registry-mirrors": ["https://XXXXXXXX.mirror.aliyuncs.com"],
    5. "exec-opts": ["native.cgroupdriver=systemd"],
    6. "log-driver": "json-file",
    7. "log-opts": {
    8. "max-size": "100m"
    9. },
    10. "insecure-registries": ["https://hub.david.com"]
    11. }
    12. EOF
    13. systemctl daemon-reload
    14. systemctl restart docker
    15. #在每个 node 节点登录 harbor 私有仓库
    16. docker login hub.david.com -u admin -p Harbor12345
    17. #在一个 node 节点下载 Tomcat 镜像进行推送
    18. docker pull tomcat:8.0.52
    19. docker images
    20. docker tag tomcat:8.0.52 hub.david.com/david-project/tomcat:v1
    21. docker images
    22. docker push hub.david.com/david-project/tomcat:v1

    (5) 配置凭据

    1. #查看登陆凭据
    2. #base64 -w 0:进行 base64 加密并禁止自动换行
    3. cat /root/.docker/config.json | base64 -w 0
    4. ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjIzLjEwIjogewoJCQkiYXV0aCI6ICJZV1J0YVc0NlNHRnlZbTl5TVRJek5EVT0iCgkJfSwKCQkiaHViLmNvbSI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0KfQ==
    1. #master 节点上 创建 harbor 登录凭据资源清单
    2. vim harbor-pull-secret.yaml
    3. apiVersion: v1
    4. kind: Secret
    5. metadata:
    6. name: harbor-pull-secret
    7. data:
    8. .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjIzLjEwIjogewoJCQkiYXV0aCI6ICJZV1J0YVc0NlNHRnlZbTl5TVRJek5EVT0iCgkJfSwKCQkiaHViLmNvbSI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0KfQ== #复制粘贴上述查看的登陆凭据
    9. type: kubernetes.io/dockerconfigjson
    10. #创建 secret 资源
    11. kubectl create -f harbor-pull-secret.yaml
    12. #查看 secret 资源
    13. kubectl get secret
    14. #创建资源从 harbor 中下载镜像
    15. cd /opt/demo
    16. vim tomcat-deployment.yaml
    17. apiVersion: extensions/v1beta1
    18. kind: Deployment
    19. metadata:
    20. name: my-tomcat
    21. spec:
    22. replicas: 2
    23. template:
    24. metadata:
    25. labels:
    26. app: my-tomcat
    27. spec:
    28. imagePullSecrets: #添加拉取 secret 资源选项
    29. - name: harbor-pull-secret #指定 secret 资源名称
    30. containers:
    31. - name: my-tomcat
    32. image: hub.david.com/david-project/tomcat:v1 #指定 harbor 中的镜像名
    33. ports:
    34. - containerPort: 80
    35. ---
    36. apiVersion: v1
    37. kind: Service
    38. metadata:
    39. name: my-tomcat
    40. spec:
    41. type: NodePort
    42. ports:
    43. - port: 8080
    44. targetPort: 8080
    45. nodePort: 31111
    46. selector:
    47. app: my-tomcat
    1. #node节点删除之前在 node 节点下载的 Tomcat 镜像
    2. docker rmi tomcat:8.0.52
    3. docker rmi hub.david.com/david-project/tomcat:v1
    4. docker images
    1. #master 节点创建资源
    2. kubectl create -f tomcat-deployment.yaml
    3. kubectl get pods
    4. #查看 Pod 的描述信息,可以发现镜像时从 harbor 下载的
    5. kubectl describe pod my-tomcat-5cbd9896c6-kb62r
    6. #刷新 harbor 页面,可以看到镜像的下载次数增加了

    二、实验

    1.部署harbor 创建私有项目,使用凭证登录

    安装过程可参考之前章节 :

    云原生Kubernetes:Kubeadm部署K8S单Master架构-CSDN博客

    (1)已安装harbor

    查询版本

    (2)登录harbor,创建项目

    (3)  在一个 node 节点下载 Tomcat 镜像进行推送

     

    (4)配置凭证

    node节点配置凭证

    master 节点上 创建 harbor 登录凭据资源清单

    创建 secret 资源

    查看 secret 资源

    创建资源从 harbor 中下载镜像

    node节点删除之前在 node 节点下载的 Tomcat 镜像

    master 节点创建资源

    查看pod

    查看svc

    查看 Pod 的描述信息,可以发现镜像时从 harbor 下载的

    刷新 harbor 页面,可以看到镜像的下载次数增加了

    三、问题

    1.harbor页面无法打开

    (1)报错

    (2)原因分析

    harbor未启动

    (3)解决方法

    启动harbor

    Windows桌面进入-终端管理员

    输入notepad

    选择所有文件

    打开hosts

    增加如下行:

    2.生成harbor 登录凭据资源清单报错

    (1)报错

    (2)原因分析

    登录凭证错误

    (3)重新修改

    修改前:

    修改后:

    3.tomcat-deployment 资源生成报错

    (1)报错

    (2)原因分析

    端口范围错误

    (3)解决方法

    修改nodePort端口为31111

    修改前:

    修改后:

  • 相关阅读:
    Android 裁剪摄像头预览窗口-SurfaceView
    【IoT】生产制造:锅仔片上机做 SMT 加工吗?
    Vue 嵌套路由 多级路由规则
    【高阶数据结构】并查集和图
    数据仓库与数据挖掘实验练习3-4(实验二2024.5.8)
    C如何调用python
    创建高性能索引
    穿越风波,“长红”的直播电商依然扎根产业和消费者
    [游戏开发][Untiy]跨平台可视化Log系统
    《Python进阶系列》二十八:mmap模块(处理大文本)
  • 原文地址:https://blog.csdn.net/cronaldo91/article/details/132887965