K8s 拉取Harbor仓库私有镜像

写在前面

以前的博客中有写过k8s拉取官方镜像,但在实际生产环境中,咱们一般都是利用Dockerfile构建的镜像,再上传到Harbor仓库,因此,使用k8s拉取harbor私有仓库的镜像,是颇有必要学习的。node

实验环境

IP地址 角色 部署软件
192.168.154.134 master docker 、k8s
192.168.154.129 node01 docker 、k8s
192.168.154.132 node02 docker 、k8s
192.168.154.131 mysql mysql 5.7

实验步骤

1、部署k8s群集

参考博客 http://www.javashuo.com/article/p-zkznnblh-ve.htmlmysql

2、部署harbor仓库

参考博客 http://www.javashuo.com/article/p-voxwfupy-nm.htmlsql

3、建立登陆秘钥

K8S在默认状况下只能拉取Harbor仓库中的公有镜像,拉取私有镜像会报错:ErrImagePull 或 ImagePullBackOffdocker

两种解决办法:json

1.到 Harbor 仓库中把该镜像的项目设置成公开权限
2.建立认证登陆秘钥,在拉取镜像时带上该秘钥vim

1.先登陆 Harbor 仓库:

docker login -u admin -p Harbor12345 192.168.154.129api

2.查看登陆的秘钥数据:

cat ~/.docker/config.jsontomcat

K8s 拉取Harbor仓库私有镜像

3.进行base64加密

cat ~/.docker/config.json | base64 -w 0app

K8s 拉取Harbor仓库私有镜像

4.建立 secret.yaml 文件:

vim secret.yaml maven

apiVersion: v1
kind: Secret
metadata:
  name: login
type: kubernetes.io/dockerconfigjson
data:
   #这里添加加密后的密钥
  .dockerconfigjson:   ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjE1NC4xMjkiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dGeVltOXlNVEl6TkRVPSIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTguMDkuNSAobGludXgpIgoJfQp9

5.建立对象

kubectl create -f secret.yaml

4、建立应用

1.编写deploy.yml文件

vim tomcat-deploy.yml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tomcat-dpm
spec:
  replicas: 2
  template:
    metadata:
      labels: # Pod副本拥有的标签,对应RC的Selector
        app: tomcat-cluster
    spec:
      containers:
      - name: tomcat-cluster
        image: 192.168.154.129/maven-test01/maven-quartz:master #这里镜像就是harbor仓库的项目镜像
        imagePullPolicy: Always
        ports:
        - containerPort: 8080 # 容器应用监听的端口号
       # 这里指定建立的密钥
      imagePullSecrets:
      - name: login

注意:须要在建立容器时指定 imagePullSecrets 指标,指定刚才建立的秘钥

2.建立,拉取私有镜像:

kubectl create -f tomcat-deploy.yml

3.查看pod

kubectl get pod -o wide

K8s 拉取Harbor仓库私有镜像

4.查看pod详情

kubectl describe pod tomcat-dpm-568ff775cf-l69s8

K8s 拉取Harbor仓库私有镜像
K8s 拉取Harbor仓库私有镜像

5、对外暴露端口

1.编写service文件

vim tomcat-service.yml

apiVersion: v1   
kind: Service
metadata:
  name: tomcat-service
  labels:
    app: tomcat-service
spec:
  type: NodePort
  selector:
    app: tomcat-cluster
  ports:
  - port: 8000
    targetPort: 8080
    nodePort: 32500

kubectl create -f tomcat-service.yml # 建立service

2.查看service

kubectl get svc

K8s 拉取Harbor仓库私有镜像

3.查看service详情

kubectl describe service tomcat-service

K8s 拉取Harbor仓库私有镜像

6、测试项目

1.node01访问测试项目

K8s 拉取Harbor仓库私有镜像

2.node02 访问测试项目

K8s 拉取Harbor仓库私有镜像
K8s 拉取Harbor仓库私有镜像

相关文章
相关标签/搜索