k8s拉取harbor镜像部署

在k8s中创建凭证

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

生成凭证:

yaml 复制代码
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的机器

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

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

创建命名空间

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

使用 deployment 部署 pod

命令创建: kubectl apply -f deployment.yml

kuboard面板创建: 从yaml新建

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新建

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

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

相关推荐
哈__8 小时前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes
九皇叔叔10 小时前
K8S 资源菜单
docker·容器·kubernetes·k8s
wdfk_prog11 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros
Zhu75811 小时前
docker环境快速部署postgresql数据库18及以上版本
postgresql·容器
安易算力13 小时前
PUE优化工程实践:从1.5到1.2的制冷架构与气流组织改造路径
网络·python·容器·架构·kubernetes
小马同学-14 小时前
nerdctl实战:Docker风格的Containerd操作利器
docker·容器·containerd
九皇叔叔14 小时前
Kubernetes 命令式对象配置详解:使用 YAML 管理 Kubernetes 资源
docker·容器·k8s
萤火夜15 小时前
Docker(四) Docker介绍
docker·容器
.冰块.16 小时前
Docker 镜像深度学习:分层 Copy‑on‑Write、Dockerfile 语法、Harbor 私有仓库实操
docker·容器·harbor·镜像·dockerfile·images
szephyr16 小时前
Docker 镜像瘦身实战:从 1.2GB 压到 85MB 的完整过程
docker·容器·部署·多阶段构建·镜像优化