• 云原生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

    修改前:

    修改后:

  • 相关阅读:
    网页JS自动化脚本(七)使用在线jQuery来操作元素
    【从0实现React18】 (一) 项目初始化
    最小编译器the-super-tiny-compiler
    如何在Jupyter Lab中安装不同的Kernel
    html页面动态加载css,可以根据系统参数配置
    hadoop生态现状、介绍、部署
    redis
    .nc格式文件的显示及特殊裁剪方式
    每日三题 8.25
    搭建C语言的环境
  • 原文地址:https://blog.csdn.net/cronaldo91/article/details/132887965