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

实验完成

有问题可评论,全天在

相关推荐
于小汐在咯4 分钟前
词根学习笔记 | Agri系列
笔记·学习
霜绛33 分钟前
Unity:Json笔记——Json文件格式、JsonUtlity序列化和反序列化
学习·unity·json·游戏引擎
小陈爱coding2 小时前
SaaS多租户数据隔离实战:MyBatis拦截器实现行级安全方案
安全·云原生·mybatis·多租户
我命由我123452 小时前
Excel - Excel 列出一列中所有不重复数据
经验分享·学习·职场和发展·word·powerpoint·excel·职场发展
璞致电子2 小时前
fpga开发板ZYNQ 璞致 PZ7010/7020 邮票孔核心板简介-ZYNQ7000系列小系统学习板
linux·嵌入式硬件·学习·fpga开发·fpga·fpga开发板·xilinx开发板
isyangli_blog3 小时前
(6)数据中心、台式(塔式)服务器、机架式服务器、刀片式服务器
运维·服务器
tq023 小时前
Cookie和Seeion在客户端和服务端的角色作用
运维·服务器·安全
风清再凯3 小时前
06_k8s数据持久化
云原生·容器·kubernetes
做运维的阿瑞3 小时前
Docker 从入门到精通:完整通关笔记
笔记·docker·容器
Miki Makimura3 小时前
Reactor 模式实现:从 epoll 到高并发调试
运维·服务器·c++·学习