k8s学习--k8s集群使用容器镜像仓库Harbor

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


环境

Ip 主机名 cpu 内存 硬盘
192.168.10.11 master 1cpu双核 2G 40G
192.168.10.12 node01 1cpu双核 2G 40G
192.168.10.13 node02 1cpu双核 2G 40G
192.168.10.18 Harbor 1cpu1核 1G 40G

虚拟机 centos7.9

master node01 node02 已部署k8s集群

版本 1.18.0

步骤

一 容器镜像仓库Harbor部署

1、docker-ce安装

(1)获取YUM源

复制代码
[root@harbor ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

(2)安装并设置启动及开机自启动

复制代码
[root@harbor ~]# yum -y install docker-ce-20.10.20
[root@harbor ~]# systemctl enable --now docker

2、下载一个docker-compose工具

复制代码
[root@harbor ~]#  wget https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64

下载完成之后,移动到/usr/local/bin/目录(直接下载到环境变量目录)

复制代码
[root@harbor ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

增加可执行权限

复制代码
[root@harbor ~]# chmod +x /usr/local/bin/docker-compose

查看版本号,并验证命令可用

复制代码
[root@harbor ~]# docker-compose -v

3、harbor离线模式安装

复制代码
[root@harbor ~]# wget https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz

将harbor包解压到/usr/local/下

复制代码
[root@harbor ~]# tar xf harbor-offline-installer-v2.8.3.tgz -C /usr/local

4、拷贝文件,并修改文件

复制代码
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml
[root@harbor harbor]# vim harbor.yml

将https的都注释掉,更改hostname为本机ip

5、安装harbor,安装完成自行启动

复制代码
[root@harbor harbor]# docker load -i harbor.v2.8.3.tar.gz
或
./prepare

本质都是准备镜像

然后

复制代码
[root@harbor harbor]# ./install.sh

全绿即可

6、访问地址与账号密码

http://192.168.10.18

默认账户密码:admin/Harbor12345

7、另外可以自行启动

--启动

docker-compose up -d

--停止

docker-compose stop

--重启

docker-compose restart

(1) 访问harbor UI界面

登入

二、Kubernetes集群使用harbor仓库

1.通过secret使用harbor仓库

(1)新建一个harbor私有仓库

新建

查看

(2)kubernetes集群所有节点配置harbor仓库

在配置文件中添加一行内容,可以通过http方式访问harbor服务,

如果有多行内容时,上行尾部加"逗号"

复制代码
[root@master ~]# vim /etc/docker/daemon.json
\ 复制代码
{
  "registry-mirrors": ["https://1dmptu91.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "insecure-registries": ["http://192.168.10.18"]
}
复制代码
[root@master ~]# systemctl restart docker

(3)上传nginx测试镜像到harbor仓库(harbor主机)

docker-compose down停止harbor,修改后再启动。

修改docker配置文件,添加如下内容,如果有多行内容时,上行尾部加"逗号"

复制代码
[root@harbor harbor]# vim /etc/docker/daemon.json
\ 复制代码
{
        "insecure-registries": ["http://192.168.10.18"]
}
复制代码
[root@harbor harbor]# systemctl restart docker
[root@harbor ~]# docker pull nginx:1.20
[root@harbor harbor]# docker login 192.168.10.18
复制代码
[root@harbor harbor]# docker tag nginx:1.20 192.168.10.18/test/nginx:1.20
[root@harbor harbor]# docker push 192.168.10.18/test/nginx:1.20

(4)创建docker-registry类型secret

复制代码
[root@master ~]# kubectl create secret docker-registry harbor-secret --docker-server=192.168.10.18  --docker-username=admin --docker-password=Harbor12345

说明:

类型为docker-registry

--docker-server指定harbor仓库的IP

--docker-username指定harbor仓库的登录用户名

--docker-password指定harbor仓库的登录密码

验证查看

复制代码
[root@master ~]# kubectl get secrets | grep harbor-secret
复制代码
[root@master ~]# kubectl describe secrets harbor-secret

(5)创建pod并使用secret

复制代码
[root@master ~]# vim pod-harbor.yml
\ 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: pod-harbor
spec:
  containers:
  - name: c1
    image: 192.168.10.18/test/nginx:1.20
  imagePullSecrets:                     # 定义镜像下载使用的secrets
  - name: harbor-secret					# 与上面的secret名称一致

(6)验证pod

复制代码
[root@master ~]# kubectl describe pod pod-harbor

可以看到是从192.168.10.18/test/nginx:1.20拉取的镜像

2.通过serviceaccout使用harbor仓库

编写yaml文件时添加imagePullSecrets的这2行配置,可以把secret配置到serviceAccount中进行调用也可以。

(1) 创建serviceAccount(服务账号)

复制代码
[root@master ~]# vim serviceaccount-harbor-sa.yaml
\ 复制代码
apiVersion: v1
kind: ServiceAccount
metadata:
  name: harbor-sa
  namespace: default
复制代码
[root@master ~]# kubectl apply -f serviceaccount-harbor-sa.yaml
[root@master ~]# kubectl get sa | grep harbor-sa

(2) 修改serviceaccount添加使用harbor-secret

复制代码
[root@master ~]# kubectl describe serviceaccounts harbor-sa

可以看到新添加的账号不具备镜像下载权限

添加权限

复制代码
[root@master ~]# kubectl patch serviceaccount harbor-sa -n default  -p '{"imagePullSecrets": [{"name": "harbor-secret"}]}'

[root@master ~]# kubectl describe serviceaccounts harbor-sa

确认已更新

(3)修改yaml使用serviceAccount

复制代码
[root@master ~]# vim pod-harbor.yml
\ 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: pod-harbor
spec:
  serviceAccount: harbor-sa		# 原来的2句换成使用harbor-sa这个serviceAccount
  containers:
  - name: c1
image: 192.168.10.18/test/nginx:1.20

(4)删除先前的重新创建pod验证

复制代码
[root@master ~]# kubectl delete pod pod-harbor

记得删除pod所在node节点上的nginx镜像

我这里是node01

复制代码
[root@node01 ~]# docker rmi 192.168.10.18/test/nginx:1.20
[root@master ~]# kubectl apply -f pod-harbor.yml
[root@master ~]# kubectl get pods
复制代码
[root@master ~]# kubectl describe pods pod-harbor

实验完成

有问题可评论,全天在

相关推荐
噎住佩奇12 小时前
k8s-控制器
容器·kubernetes
Y‍waiX‍‍‮‪‎⁠‌‫‎‌‫‬12 小时前
CentOS7(Linux)从系统安装到环境搭建
linux·运维·服务器
AI视觉网奇12 小时前
Delaying 20 processes from spawning due to memory pressure
笔记·学习·ue5
2501_9449347312 小时前
高职学历从事运营的现状分析
学习
ProgrammerPulse12 小时前
K8s 运维告别 “猜谜游戏”:青云云易捷v6.0对接 K8sGPT,AI 赋能一键解锁智能诊断
云原生
知识分享小能手12 小时前
Oracle 19c入门学习教程,从入门到精通,Oracle优化SQL语句 — 语法知识点与使用方法详解(16)
sql·学习·oracle
calvinpaean12 小时前
Metric3D Towards Zero-shot Metric 3D Prediction from A Single Image 论文学习
学习·3d
是火云哦12 小时前
打包你的开发环境:Docker 从入门到上瘾
运维·docker·容器
Engineer邓祥浩12 小时前
设计模式学习(22) 23-20 解释器模式
学习·设计模式·解释器模式
zpedu12 小时前
什么是CISA证书?有啥作用
学习