Kubernetes集群使用harbor仓库
- 容器镜像仓库harbor部署
1. 主机基础配置
[root@localhost ~]# hostnamectl set-hostname harbor && bash
关闭三件套
2. docker-ce安装
- 安装并设置启动及开机自启动:
[root@harbor ~]# yum -y install docker-ce-20.10.20
- 启动并设置开机自启:
[root@harbor ~]# systemctl start docker
[root@harbor ~]# systemctl enable docker
- 查看docker版本:
[root@harbor ~]# docker version

sudo tee /etc/docker/daemon.json <<EFO
{
"registry-mirrors": [
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"http://hub-mirror.c.163.com"
]
}
EFO
[root@harbor ~]# systemctl daemon-reload
[root@harbor ~]# systemctl restart docker
3. 下载一个docker-compose工具
拖入docker-compose-linux-x86_64包到linux主机
[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

4. harbor安装
- 拖入harbor-offline-installer-v2.8.3.tgz包到linux主机,解压缩
[root@harbor ~]# tar xf harbor-offline-installer-v2.8.3.tgz -C /usr/local/
- 拷贝文件,并修改文件:
[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml
[root@harbor harbor]# vim harbor.yml
- 修改:5行,8行,10行;注释13行,15行,17行,18行

下翻可以看到harbor仓库的登录密码!!!
保存退出
- 安装harbor,安装完成自行启动:

[root@harbor harbor]# docker load -i harbor.v2.8.3.tar.gz
- 准备:[root@harbor harbor]# ./prepare

- 安装:[root@harbor harbor]# ./install.sh

访问地址和账号密码: http://192.168.10.14/

另外可以自行启动:
[root@harbor harbor]# docker-compose up -d //后台运行

不做:--停止:docker-compose stop
不做:--重启:docker-compose restart
访问harbor ui界面:

- Kubernetes集群使用harbor仓库
1. 通过secret使用harbor仓库
新建一个harbor私有仓库



Kubernetes集群所有节点配置访问harbor仓库:
[root@harbor harbor]# vim /etc/docker/daemon.json
添加:
,
"insecure-registries": ["http://192.168.10.14"]
保存退出
[root@harbor ~]# systemctl restart docker
多窗口测试:登录私有仓库:(确保四台主机都可以连接到私有仓库)
[root@harbor harbor]# docker login 192.168.10.14

上传nginx测试镜像到harbor仓库(harbor主机):
拖入nginx1u20.tar包到linux主机
[root@harbor ~]# docker load -i nginx1u20.tar
给镜像重新打标签并上传到私有仓库:(必须重新打标签,明确ip地址)
[root@harbor harbor]# docker tag nginx:1.20 192.168.10.14/test/nginx:1.20
[root@harbor harbor]# docker push 192.168.10.14/test/nginx:1.20

应用场景:运维人员在不知道harbor用户名和密码的情况下,直接调用创建 docker-registry 类型的 Secret(Secret 来存储 Docker 镜像仓库的认证信息。这在你需要从私有镜像仓库拉取镜像时非常有用。)来运行一个pod。避免泄露harbor仓库的密码!!!
方法一:
1. 创建docker-registry类型secret:
[root@master01 ~]# kubectl create secret docker-registry harbor-secret --docker-server=192.168.10.14 --docker-username=admin --docker-password=Harbor12345

验证查看:[root@master01 ~]# kubectl get secret

[root@master01 ~]# kubectl describe secrets harbor-secret

创建pod直接使用secret:
[root@master01 ~]# vim pod-harbor.yml
添加:
apiVersion: v1
kind: Pod
metadata:
name: pod-harbor
spec:
containers:
- name: c1
image: 192.168.10.14/test/nginx:1.20
imagePullSecrets: # 定义镜像下载使用的secrets
- name: harbor-secret # 与上面的secret名称一致
保存退出
应用:[root@master01 ~]# kubectl apply -f pod-harbor.yml
验证pod:[root@master01 ~]# kubectl get pod -o wide

查看pod详细信息:[root@master01 ~]# kubectl describe pod pod-harbor

可以看到是从192.168.10.14/test/nginx:1.20拉取的镜像
方法二:安全性更高一点
2. 通过serviceaccout使用secret访问harbor仓库
编写yaml文件时添加imagePullSecrets的这2行配置,可以把secret配置到serviceAccount中进行调用也可以。
- 创建serviceAccount(服务账号):
[root@master01 ~]# vim serviceaccount-harbor-sa.yaml
添加:
apiVersion: v1
kind: ServiceAccount
metadata:
name: harbor-sa
namespace: default
保存退出
应用:[root@master01 ~]# kubectl apply -f serviceaccount-harbor-sa.yaml
![]()
[root@master01 ~]# kubectl describe serviceaccount harbor-sa

- 修改serviceaccount添加使用harbor-secret的权限
[root@master01 ~]# kubectl patch serviceaccount harbor-sa -n default -p '{"imagePullSecrets": [{"name": "harbor-secret"}]}'
[root@master01 ~]# kubectl describe serviceaccount harbor-sa

[root@master01 ~]# kubectl get serviceaccount harbor-sa -o yaml

- 修改yaml使用serviceAccount
[root@master01 ~]# 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.14/test/nginx:1.20
保存退出
- 删除先前的重新创建pod验证:
[root@master01 ~]# kubectl delete pod pod-harbor
[root@master01 ~]# kubectl apply -f pod-harbor.yml
[root@master01 ~]# kubectl get pods

[root@master01 ~]# kubectl describe pods pod-harbor

更多推荐
所有评论(0)