目录
一、理论
1.部署harbor 创建私有项目,使用凭证登录
(1)在docker harbor 上(192.168.204.176)上环境准备
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker.service
systemctl enable docker.service
docker version
(2)部署harbor
#上传 docker-compose 和 harbor-offline-installer-v1.2.2.tgz 到 /opt 目录中
cd /opt
chmod +x docker-compose
mv docker-compose /usr/local/bin/
#部署 Harbor 服务
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
vim +5 /usr/local/harbor/harbor.cfg
--5行--修改,设置为Harbor服务器的IP地址或者域名
hostname = 192.168.204.176
cd /usr/local/harbor/
./install.sh
(3)登录harbor,创建项目
/#在 Harbor 中创建一个新项目
(1)浏览器访问:http://192.168.204.176 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345
(2)输入用户名和密码登录界面后可以创建一个新项目。点击“+项目”按钮
(3)填写项目名称为“david-project”,点击“确定”按钮,创建新项目
(4)每个node节点登录harbor ,上传镜像
#在每个 node 节点配置连接私有仓库(注意每行后面的逗号要添加)
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://XXXXXXXX.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"insecure-registries": ["https://hub.david.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
#在每个 node 节点登录 harbor 私有仓库
docker login hub.david.com -u admin -p Harbor12345
#在一个 node 节点下载 Tomcat 镜像进行推送
docker pull tomcat:8.0.52
docker images
docker tag tomcat:8.0.52 hub.david.com/david-project/tomcat:v1
docker images
docker push hub.david.com/david-project/tomcat:v1
(5) 配置凭据
#查看登陆凭据
#base64 -w 0:进行 base64 加密并禁止自动换行
cat /root/.docker/config.json | base64 -w 0
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjIzLjEwIjogewoJCQkiYXV0aCI6ICJZV1J0YVc0NlNHRnlZbTl5TVRJek5EVT0iCgkJfSwKCQkiaHViLmNvbSI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0KfQ==
#master 节点上 创建 harbor 登录凭据资源清单
vim harbor-pull-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: harbor-pull-secret
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjIzLjEwIjogewoJCQkiYXV0aCI6ICJZV1J0YVc0NlNHRnlZbTl5TVRJek5EVT0iCgkJfSwKCQkiaHViLmNvbSI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0KfQ== #复制粘贴上述查看的登陆凭据
type: kubernetes.io/dockerconfigjson
#创建 secret 资源
kubectl create -f harbor-pull-secret.yaml
#查看 secret 资源
kubectl get secret
#创建资源从 harbor 中下载镜像
cd /opt/demo
vim tomcat-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-tomcat
spec:
replicas: 2
template:
metadata:
labels:
app: my-tomcat
spec:
imagePullSecrets: #添加拉取 secret 资源选项
- name: harbor-pull-secret #指定 secret 资源名称
containers:
- name: my-tomcat
image: hub.david.com/david-project/tomcat:v1 #指定 harbor 中的镜像名
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-tomcat
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 31111
selector:
app: my-tomcat
#node节点删除之前在 node 节点下载的 Tomcat 镜像
docker rmi tomcat:8.0.52
docker rmi hub.david.com/david-project/tomcat:v1
docker images
#master 节点创建资源
kubectl create -f tomcat-deployment.yaml
kubectl get pods
#查看 Pod 的描述信息,可以发现镜像时从 harbor 下载的
kubectl describe pod my-tomcat-5cbd9896c6-kb62r
#刷新 harbor 页面,可以看到镜像的下载次数增加了
二、实验
1.部署harbor 创建私有项目,使用凭证登录
安装过程可参考之前章节 :
云原生Kubernetes:Kubeadm部署K8S单Master架构-CSDN博客
(1)已安装harbor
查询版本
(2)登录harbor,创建项目
(3) 在一个 node 节点下载 Tomcat 镜像进行推送
(4)配置凭证
node节点配置凭证
master 节点上 创建 harbor 登录凭据资源清单
创建 secret 资源
查看 secret 资源
创建资源从 harbor 中下载镜像
node节点删除之前在 node 节点下载的 Tomcat 镜像
master 节点创建资源
查看pod
查看svc
查看 Pod 的描述信息,可以发现镜像时从 harbor 下载的
刷新 harbor 页面,可以看到镜像的下载次数增加了
三、问题
1.harbor页面无法打开
(1)报错
(2)原因分析
harbor未启动
(3)解决方法
启动harbor
Windows桌面进入-终端管理员
输入notepad
选择所有文件
打开hosts
增加如下行:
2.生成harbor 登录凭据资源清单报错
(1)报错
(2)原因分析
登录凭证错误
(3)重新修改
修改前:
修改后:
3.tomcat-deployment 资源生成报错
(1)报错
(2)原因分析
端口范围错误
(3)解决方法
修改nodePort端口为31111
修改前:
修改后: