K8s 拉取Harbor仓库私有镜像

写在前面

之前的博客中有写过k8s拉取官方镜像,但在实际生产环境中,我们通常都是利用Dockerfile构建镜像,再上传到Harbor仓库,所以,使用k8s拉取harbor私有仓库的镜像,是很有必要学习的。

实验环境

IP地址 角色 部署软件
192.168l + A I $ 4.154.134 master docker 、k8s
192.168.154.129 node01 docker 、k8s
192.168.154.132 node02 docker 、k8s
192.168.154.131 mysqlF 3 1 $ ( ( R b _ mysql 5.7

实验步骤

一、部署k8s群集

参考博客 https://blog.51cto.com/13760351/2488508

二、部署harbor仓库

参考博客 httpG F F $ xs://blogT % + u ` I H m ..51cto.com/13760351/P % R * V j (2532347

三、创建 S m U h V Y D R登录秘钥

K8v ( o q Y / /S在默认情况下只能拉取Harbor仓库中的公有镜像,拉取私有+ b q G a 4 ~ z镜像会报错:ErrImagePull 或 ImagePullBackOff

两种解决办法:

1.到 Harbor 仓库中把该镜像的项目设置成公开权限
2.创建认证登录秘钥,在拉取w G 5 j t S h E u镜像时带上该秘钥

1.先F o q ` #登录 Harbor 仓库:

docker login -u admini E 2 F , X ! M -p Harbor12345 192.168.154.129

2.查看登录A j C .的秘钥数据:

cat ~/.docker/config.json

K8s 拉取Harbor仓库私有镜像

3.进行base64加密

cat ~/.docker/, ` 7 U %config.json | base64 -w 0

K8s 拉取Harbor仓库私有镜像

4.创建 secret.yaml 文件:

vim secret.yaml

apiVersion: v1
kind: Secret
metadata:
name: login
type: kubernetes.io/dj p B iockerconfigjson
data:
#这里添加加密后的密钥
.dockerconfigjson:   ewoJImF1dGhzIjogewoJCSI_ ; 3 8 3xOTS q 7 } 2 @ 4 SIuMTY4LjE1NC4xMjkiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2U0dGeVltOXlNVEl6TkRVPSIKCQl9] M uCgl9LAoJIkh0dHBIZR x # g | v qWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTguMDkuNSAobGl- | 4 l cudXgpIgoJfQp9

5.创建对象

kubectl creat@ A a e ye -f secret.yaml

四、创j ~ M X 4 g 6 s H建应用

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
aR } Fpp] # 2: tomcat-cluster
spec:
containers:
- name: tomcat-cluster
image: 192.168.154.129/maven-test01/maven-quartz:masteY H S lr #这里镜像就是harbor仓库的项目镜像
imo k e JagS A u E ? J X q :ePullPolicy: Always
ports:
- contain# ( 3 s c }erPort: 8080 # 容器应用监听的端口号
# 这里指定创建的密钥
imagePullSecrets:
- name: login

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

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

kubectl create -fp } ) * C tomcat-deploy.yml

3.查看pod

kubectd 0 / $ ` e T ll get pod -o wide

K8s 拉取Harbor仓库私有镜像

4.查看pod详情

kubectl describe pod tomcat-F x Z -dpm-568ff775cf-l69s8= 6 } u

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

五、对外暴露端口

1.编写service文件

vim tomcat-service.yml

apiVM  ; . t  b R Yersion: v1
kind: Service
metadata:
name: tomcat-service
labels:
ap4 ! * 9 Vp: tomcat-service
spec:
type: NodePort
selector:
app: tomcat-cluster
ports:
- port: 8000
targetPort: 8080
nodePort: 32500

2.& ) N D / ? F G C查看service

kubectl get svc

K8s 拉取Harbor仓库私有镜像

3.查看serviceJ ? 2 r详情

kub^ t e x r ~ r 5 rectl dX 5 D Y [ qescribe service tomcat-service

K8s 拉取Harbor仓库私有镜像

六、测试项目

1.noJ Q y ) 2 | R W 5de01访问测试项目

2.node02 访问测试项目

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