纯步骤
基于上次已经搭建好的K8S多节点,搭建K8S的harbor私有仓库
文章目录
- 一:harbor服务端配置
- 二:Node节点 配置
- 三:master节点配置
开一台服务器,搭建harbor
一:harbor服务端配置
需安装 Python、 Docker 和Docker Compose、harbor
1:基本环境配置
固定IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改并添加:
dhcp改为static
添加:
IPADDR=192.168.195.80
NETMASK=255.255.255.0
GATEWAY=192.168.195.2
DNS1=192.168.195.2
# systemctl restart network
# systemctl stop NetworkManager
# systemctl disable NetworkManager
# iptables -F
关闭核心防护
# setenforce 0
# vi /etc/selinux/config
改为 SELINUX=disabled
# hostnamectl set-hostname harbor
# su
2:首先部署docker环境
安装依赖包
# 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 docker-ce -y
# systemctl start docker
# systemctl enable docker
镜像加速配置
现在需要从公有仓库里拉取镜像,由于长城防火墙及网络问题,必须使用镜像加速,才能快速拉取镜像
访问网站https://help.aliyun.com/document_detail/60750.html
生成加速地址"https://elxy356o.mirror.aliyuncs.com"
# cd /etc/docker
# tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://elxy356o.mirror.aliyuncs.com"]
}
EOF
# ls 可看到daemon.jsp
# systemctl daemon-reload 重新加载
开启路由转发
# vim /etc/sysctl.conf
末行插入:
net.ipv4.ip_forward=1
# sysctl -p 生效
重启网络和docker
# service network restart
# systemctl restart docker
docker引擎环境部署完成
3:下载harbor安装程序、下载compose
#rz -E
把harbor-offline-installer-v1.2.2.tgz、docker-compose包复制过来
# chmod +x docker-compose
# mv docker-compose /usr/bin
# tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
# cd /usr/local/harbor
# ls
修改harbor配置文件(改为harbor IP地址)
# vim harbor.cfg
改为:hostname = 192.168.195.80
启动安装
# sh install.sh
修改配置文件
安装完成,有一个网址http://192.168.195.80,就是harbor的图形界面
登录进去,创建项目project
账号是admin
密码是Harbor12345
账户和密码在配置文件中已经定义,可以查看配置文件
创建一个项目
二:Node节点 配置
1:node节点配置连接私有仓库
node1 node2节点同步操作
注意,后面的逗号不要忘了添加
# vim /etc/docker/daemon.json
添加:
"registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com"],
"insecure-registries":["192.168.195.80"]
# systemctl restart docker
pod管理的好处,重启后docker容器状态还是UP状态
2:node节点登录harbor私有仓库
注意:在用harbor私有仓库下载镜像,创建资源时,要保证node处于harbor登陆状态
# docker login 192.168.195.80
输入 admin
输入 Harbor12345
示例1:在node1节点上传镜像到私有仓库,供其他node节点下载
3:node1节点上传镜像到harbor
从公有仓库下载镜像 (相当于原材料)
# docker pull tomcat:8.0.52
打标签
# docker tag tomcat:8.0.52 192.168.195.80/project/tomcat
推送到私有仓库
# docker push 192.168.195.80/project/tomcat
在harbor图形界面查看,可看到project项目中已上传镜像192.168.195.80/project/tomcat
4:node2节点从私有仓库下载192.168.195.80/project/tomcat镜像
测试 下载node1刚刚上传到私有仓库的镜像
# docker pull 192.168.195.80/project/tomcat
# docker images
在harbor图形界面查看,可看到project项目中镜像192.168.195.80/project/tomcat 被下载1次
示例2: 用yaml文件格式创建tomcat(用harbor私有仓库拉取镜像)
5:node节点查看并复制用户凭证序列号
# cat .docker/config.json | base64 -w 0
复制凭证序列号
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjE5NS44MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy44IChsaW51eCkiCgl9Cn0=
(1)删除上面示例中的tomcat镜像
(2)两个node节点的用户凭据是相同的,因为登录的是同一个harbor私有仓库
三:master节点配置
6:在master节点创建secret资源
# vim registry-pull-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: registry-pull-secret
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjE5NS44MCI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy44IChsaW51eCkiCgl9Cn0=
type: kubernetes.io/dockerconfigjson
创建secret资源
# kubectl create -f registry-pull-secret.yaml
查看secret资源
# kubectl get secret
7:在master节点创建pod资源
从harbor私有仓库中下载镜像
# vim tomcat-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-tomcat
spec:
replicas: 2
template:
metadata:
labels:
app: my-tomcat
spec:
imagePullSecrets:
- name: registry-pull-secret
containers:
- name: my-tomcat
image: 192.168.195.80/project/tomcat
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
创建pod资源
# kubectl create -f tomcat-deployment.yaml
# kubectl get pods -w
详细查看pod资源(包含创建过程)
# kubectl describe pod my-tomcat-559834-nprvn
# kubectl describe pod my-tomcat-435743-fdbscx
# kubectl get pod -o wide
# kubectl get pods,svc,deployment
详细查看pod(包含创建过程)
#kubectl describe pod my-tomcat-7f9c8876b4-cjs2p
#kubectl describe pod my-tomcat-7f9c8876b4-gh6ss
查看pod资源创建到哪个node节点
在harbor图形界面查看,可看到project项目中镜像192.168.195.80/project/tomcat 显示被下载3次
遇到问题:
第一次创建pod资源时出error
pod资源为Pending状态
详细查看pod(包含创建过程),创建失败
#kubectl describe pod my-tomcat-7f9c8876b4-cjs2p
#kubectl describe pod my-tomcat-7f9c8876b4-gh6ss
查看节点状态,变成了NotReady状态
经检查:是因为keepalived的VIP消失了,重新启动nginx和keepalived后,负载均衡Lb1的VIP地址有了,再次查看节点状态 变成了Ready状态,随之,pod资源也创建成功了