Kubernetes+Harbor实现本地镜像的拉取

为了使用的镜像更加安全和快捷,我们想到可以通过搭建好的私有镜像仓库从中拉取镜像。所以此次试验在原有的Kubernetes集群之外还要在创建一个harbor私有镜像仓库。

实验步骤

1.搭建一个harbor私有仓库,因为在之前的博客中我已经详细的介绍过如何搭建一个harbor私有仓库所以这里不再做过多的赘述。

2.搭建好harbor之后,需要创建一个用于存放Kubernetes集群专用镜像的项目。并向其中上传几个镜像用于后续试验。
在这里插入图片描述
在这里插入图片描述
3.在node节点中的daemon.jason文件中加入harbor仓库的IP地址。

[root@node_02 ~]# vi /etc/docker/daemon.json 
{
 "insecure-registries":["192.168.80.138"],
 "registry-mirrors": ["https://u9rp4hyl.mirror.aliyuncs.com"]
}

重启docker服务

systemctl daemon-reload
systemctl restart docker

4.在node节点登陆过harbor仓库后需要查看,harbor的登录凭据。

在管理员的家目录中查看
cd
cat .docker/config.json |base64 -w 0
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjgwLjEzOCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy44IChsaW51eCkiCgl9Cn0=
两个node节点的凭据是一致的。

5.在master节点上创建secret镜像拉取资源服务。

#登录凭证一定要用一行显示
vi registry-pull-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: registry-pull-secret
data:
 .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjgwLjEzOCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy44IChsaW51eCkiCgl9Cn0=
type: kubernetes.io/dockerconfigjson

#创建资源
kubectl create -f registry-pull-secret.yaml

#查看生成的资源
kubectl get secret

[root@master_01 opt]# kubectl get secret
NAME                   TYPE                                  DATA   AGE
default-token-hx89r    kubernetes.io/service-account-token   3      12d
registry-pull-secret   kubernetes.io/dockerconfigjson        1      29m

6.最后就可以通过yaml文件拉取harbor仓库的镜像创建pod了

#创建yaml文件,指定harbor仓库的IP地址和使用的验证凭证

vi my-nginx.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my-nginx
    spec:
      imagePullSecrets:
      - name: registry-pull-secret
      containers:
      - name: my-nginx
        image: 192.168.80.138/myhaven/nginx
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort:
  selector:
    app: my-nginx

查看生成的pod资源端口

kubectl get svc

NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP        12d
my-nginx     NodePort    10.0.0.124   <none>        80:37494/TCP   22m

在这里插入图片描述
可以看到我之前下载过一次,用yaml文件创建了3个副本需要下载3次所以一共下载了4次。
在这里插入图片描述

强制删除命令

强制删除命令,删除无状态pod资源

kubectl delete pod [pod name] --force --grace-period=0 -n [namespace]
GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 9 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 10 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐