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

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

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

实验步骤

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

2.搭建好harbor之后,需要创建一个用于存放Kubernetes集群专用镜像的项目。并向其中上传几个镜像用于后续试验。
Kubernetes+Harbor实现本地镜像的拉取_第1张图片
Kubernetes+Harbor实现本地镜像的拉取_第2张图片
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             443/TCP        12d
my-nginx     NodePort    10.0.0.124           80:37494/TCP   22m

Kubernetes+Harbor实现本地镜像的拉取_第3张图片
可以看到我之前下载过一次,用yaml文件创建了3个副本需要下载3次所以一共下载了4次。
Kubernetes+Harbor实现本地镜像的拉取_第4张图片

强制删除命令

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

kubectl delete pod [pod name] --force --grace-period=0 -n [namespace]

你可能感兴趣的:(Kubernetes,docker)