文章将在k8s集群二进制部署基础上部署harbor私有仓库,并使得k8s中的node节点使用harbor提供的镜像部署资源

harbor服务器地址为192.168.218.161
进行harbor服务器的初始化

# 设置时区
vim /etc/profile
TZ='Asia/Shanghai'
export TZ
source /etc/profile
# 同步时间
ntpdate ntp.aliyun.com
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

脚本安装docker
docker部署完成后

部署docker-compose

curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod 777 /usr/local/bin/docker-compose
docker-compose -v

docker引擎和docker-compose都是安装harbor的依赖
下面开始安装Harbor

# 上传harbor安装包,这里用的是1.8.2版本
tar -xf harbor-offline-installer-v1.8.2.tgz
mv harbor /usr/local/
cd /usr/local/harbor/
# 生成harbor的密钥
openssl genrsa -out docker.com.key 2048
openssl req -new -key docker.com.key -out docker.com.csr -subj "/CN=192.168.218.161"
openssl x509 -req -days 3650 -in docker.com.csr -signkey docker.com.key -out docker.com.crt

# 安装前,修改harbor配置文件
vim harbor.yml

在这里插入图片描述
注意,harbor的所需参数需在安装前修改,安装后修改是不起作用的

若需修改所需参数,需要修改配置文件后重新安装harbor

详细参照harbor仓库部署

开始安装

./prepare
./install.sh

使用浏览器访问页面

https://harbor-ip

harbor服务器本地登陆harbor

docker login -u admin -p https://127.0.0.1

默认密码为Harbor12345,在配置文件中可查看

下面配置k8s集群使用harbor

# node节点上修改docker的systemd文件
vim /usr/lib/systemd/system/docker.service
# 修改ExecStart,添加参数--insecure-registry harbor-ip
# 如下
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 192.168.218.161


# 或者修改daemon.json
# 添加参数如下
"insecure-registries": [ "192.168.218.161"]

# 重载系统文件
# 重启docker
systemctl daemon-reload
systemctl restart docker

node节点镜像测试

# 两个node节点都需要登陆harbor
[root@node01 ~]# docker login -u admin https://192.168.218.161
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

在harbor网页上创建k8s项目

若项目不存在,则会上传失败

在这里插入图片描述

# 准备测试镜像
# 命名格式为harbor-ip/项目/镜像名:标签
docker tag nginx:latest 192.168.218.161/k8s/nginx:test
# 上传镜像
docker push 192.168.218.161/k8s/nginx:test

在harbor网页上的k8s项目中,可以看到192.168.218.161/k8s/nginx:test已被成功上传

# 在另一台node节点上尝试拉取192.168.218.161/k8s/nginx:test
docker pull 192.168.218.161/k8s/nginx:test

# 结束后查看
docker images

配置k8s与harbor协同

在node节点能登陆、上传、拉取harbor镜像的前提下

# 创建用于登陆harbor的secret
# 注意修改IP地址和用户/密码
kubectl create secret docker-registry harbor-secret \
--docker-server=192.168.218.161 --docker-username=admin \
--docker-password=Harbor12345
# 查看创建的secret
kubectl get secret
# 查看serviceaccount
kubectl get sa
# 指定serviceaccount的secret为harbor的secret
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "harbor-secret"}]}'
# 查看是否修改成功
kubectl describe  sa default

下面测试k8s与harbor的协同

创建一个yaml文件,yaml文件中包含一个deployment资源

deployment资源使用了192.168.218.161/k8s/nginx:test这个镜像

并使用kubectl create -f命令创建这个deployment资源

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: 192.168.218.161/k8s/nginx:test
        ports:
        - containerPort: 80

创建完成后,使用kubectl get deploy查看deployment
使用kubectl get pod查看pod运行情况
若正常运行,则部署完成!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐