一、概述

  • Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker-Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用;
  • 这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本企业需求。
  • 官方地址:https://goharbor.io/

二、实验环境介绍

此实验是基于K8S二进制群集部署升级优化,对于镜像仓库选择了与harbor私有仓库进行对接,使node的镜像操作全部基于harbor来完成,更加方便、安全

K8S二进制详细部署可参考前面博客K8S企业级二进制部署,点此跳~~

服务器规划:
在这里插入图片描述

三、Harbor仓库部署

参考前面博客
harbor仓库部署,点此跳~~~
在这里插入图片描述

  • 在harbor上创建项目

在这里插入图片描述

四、harbor对接node节点

  • 在2个node节点中指明harbor仓库位置
##所有node节点都需要操作
[root@k8s_node1 ~]# vim /etc/docker/daemon.json 
{
   "registry-mirrors": ["https://7b6asy31.mirror.aliyuncs.com"],
   "insecure-registries":["192.168.5.15"]
}

##重启docker服务
[root@k8s_node1 ~]# systemctl restart docker

2个node登录harbor仓库,
注意在使用harbor下载镜像创建资源时,要保证node上的harbor处于登录状态

[root@k8s_node1 ~]# docker login 192.168.5.15
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

  • 上传镜像到harbor仓库
##先从公网仓库下载tomcat镜像
[root@k8s_node1 ~]# docker pull tomcat:8.0.52

##修改镜像标签上传至harbor
[root@k8s_node1 ~]# docker tag tomcat:8.0.52 192.168.5.15/project/tomcat
[root@k8s_node1 ~]# docker push 192.168.5.15/project/tomcat

在这里插入图片描述

  • 在node节点上查看登录harbor的安全凭据
[root@k8s_node1 ~]# cat .docker/config.json |base64 -w 0
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjUuMTUiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dGeVltOXlNVEl6TkRVPSIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTkuMDMuOCAobGludXgpIgoJfQp9[roo
  • 进入master节点,根据此凭据创建安全pod,供业务容器创建直接调用
[root@k8s_master ~]# vim registry-pull-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: registry-pull-secret
data:
 .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjUuMTUiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dGeVltOXlNVEl6TkRVPSIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTkuMDMuOCAobGludXgpIgoJfQp9
type: kubernetes.io/dockerconfigjson

##创建pod
[root@k8s_master ~]# kubectl create -f registry-pull-secret.yaml
secret/registry-pull-secret created

五、验证

  • 在msater中创建一个tomcat的业务容器,调用的镜像为harbor中的镜像
##编写yaml文件
[root@k8s_master ~]# vim tomcat-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-tomcat
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: my-tomcat
    spec:
      imagePullSecrets:
      - name: registry-pull-secret
      containers:
      - name: my-tomcat
        image: 192.168.5.15/project/tomcat
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-tomcat
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 31111
  selector:
    app: my-tomcat

##执行创建,副本数量为2
[root@k8s_master ~]# kubectl create -f tomcat-deployment.yaml 
  • 查看pod资源情况
[root@k8s_master ~]# kubectl get pods,svc | grep tomcat

pod/my-tomcat-546b9b4868-8ml6g        1/1     Running   0          95s
pod/my-tomcat-546b9b4868-fhd9f        1/1     Running   0          95s
service/my-tomcat       NodePort    10.0.0.228   <none>        8080:31111/TCP   95s

在这里插入图片描述
查看harbor网页,查看下载次数
在这里插入图片描述
由此可见,k8s群集创建pod资源,调用的是harbor仓库中的镜像,已经成功对接

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐