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

实验完成

有问题可评论,全天在

相关推荐
yuezhilangniao1 天前
**国内阿里云环境**ubuntu22安装k8s1.32
阿里云·kubernetes·云计算
鹤落晴春1 天前
RH124问答3:从命令行管理文件
linux·运维·服务器
guslegend1 天前
大模型驱动大数据SRE智能运维
大数据·运维
遇见火星1 天前
Docker Compose 完全入门:一键启动所有容器
运维·docker·容器·docker compose
小啊曼1 天前
CIO实战方法论_11_组织变革打破部门墙
运维
❀搜不到1 天前
远程服务器codex使用本地cc-switch的deepseek api
运维·服务器
虾壳云官方1 天前
OpenClaw 2.7.9 Windows 一键部署教程:零基础也能搭建 AI 自动化助手
运维·人工智能·windows·自动化·openclaw·openclaw一键部署
江南风月1 天前
WGCLOUD保姆级教程最新版整理
运维·zabbix·运维开发·prometheus·日志审计
志栋智能1 天前
超自动化巡检:知识沉淀与团队协作的新载体
大数据·运维·网络·数据库·人工智能·自动化
袁小皮皮不皮1 天前
1.HCIP BFD 学习笔记(优化版)
服务器·网络·笔记·网络协议·学习·智能路由器·ip