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倉庫私有鏡像

相關文章
相關標籤/搜索