当前位置: 首页 > news >正文

k8s拉取harbor镜像部署

在k8s中创建凭证

首先在节点docker登录harbor, 登录成功之后会在$HOME/.docker/ 生成一个config.json文件,这个就是登录凭证,后面docker pull就不需要再登录了。但是如果在k8s发布pod或者deploment时,这个凭证要在k8s中创建一个对应secret,然后挂载到pod 或 deployment中的yaml中,这样k8s才能下载镜像,否则提示权限验证错误。
生成凭证:

kubectl create secret generic harborregcred[凭证的名称] --from-file=.dockerconfigjson=$HOME/.docker/config.json  --type=kubernetes.io/dockerconfigjson

insecure-registries配置

docker1.3.2版本开始默认docker registry使用的是https,我们设置Harbor默认http方式,所以当执行用docker login、pull、push等命令操作非https的docker regsitry的时就会报错。

解决办法:配置/etc/docker/daemon.json,在需要连接Harbor仓库的机器上面,编辑/etc/docker/daemon.json,如果没有就要创建文件,添加以下内容。注意不是安装harbor的机器

{
    "registry-mirrors": ["https://hccwwfjl.mirror.aliyuncs.com"],
    "insecure-registries":["harbor的ip地址:端口号"]
}

重启docker 服务: systemctl daemon-reload && systemctl restart docker

创建命名空间

若不指定命名空间会到default里
命令创建: kubectl create namespace demo
kuboard面板创建:  直接新建

使用 deployment 部署 pod

命令创建: kubectl apply -f deployment.yml
kuboard面板创建: 从yaml新建

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-spring-boot-app
  namespace: demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-spring-boot-app
  template:
    metadata:
      labels:
        app: my-spring-boot-app
    spec:
      containers:
      - name: my-spring-boot-app
        image: 'harbor的ip:端口/项目名/镜像名:标签'
        ports:
        - containerPort: 8080

使用 Service使应用程序可以从集群外部访问

命令创建: kubectl apply -f service.yml
kuboard面板创建: 从yaml新建

apiVersion: v1
kind: Service
metadata:
  name: my-spring-boot-app-service
  namespace: vmware-local
spec:
  selector:
    app: my-spring-boot-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

通过 Ingress 访问您的应用

命令创建: kubectl apply -f ingress .yml
kuboard面板创建: 从yaml新建

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-demo-app
  namespace: vmware-local
spec:
  ingressClassName: nginx
  rules:
    - host: www.k8s.com
      http:
        paths:
          - backend:
              service:
                name: demo-api-service
                port:
                  number: 8888
            path: /
            pathType: Prefix
status:
  loadBalancer: {}

修改host即可访问 域名加开发端口

安装 Ingress Controller

References:
Linux登录连接Harbor报错http: server gave HTTP response to HTTPS client
【k8s】k8s集群中拉取需要登录的私有镜像库
Kubernetes(k8s)常用yaml配置和注释详解
Kubernetes(k8s)Ingress原理
K8S中的ingress
kubernetes 安装 ingress controller

相关文章:

  • 3 算法1-4 过河卒
  • CineMaster: 用于电影文本到视频生成的 3D 感知且可控的框架。
  • word中把latex公式快速转换为word公式
  • 第二章 activiti “开发环境搭建训练营”
  • 通信原理速成笔记(信息论及编码)
  • 蓝桥 发现环
  • Leetcode-最大矩形(单调栈)
  • 【数据集】ACM数据集
  • Python Cookbook-2.20 在 Python 的搜索路径中寻找文件
  • Leetcode-柱状图中最大的矩形(单调栈)
  • 进程信号
  • 大模型在白血病诊疗全流程风险预测与方案制定中的应用研究
  • 【AIGC系列】4:Stable Diffusion应用实践和代码分析
  • 大语言模型中的 Token:它们是什么,如何工作?
  • 如何调试Linux内核?
  • 【Java】I/O 流篇 —— 打印流与压缩流
  • 无人系统:未来科技的智能化代表
  • 有关数据库表的冗余字段
  • 塔能科技:工厂智慧照明,从底层科技实现照明系统的智能化控制
  • Python 项目安全实战:工具应用、规范制定、数据防护与架构加固
  • APP和网站是一样吗/企业网站分析报告
  • 在线做静态头像的网站/天津百度推广代理商
  • 网站开发 java/推广普通话宣传周活动方案
  • 政府网站报价/百度图片收录提交入口
  • 网站建设与管理素材/如何自己开发软件app
  • 做网站选择什么服务器/中国新闻网发稿