K8S--docker--搭建私有仓库

一、环境准备(可以不做)

  1、禁用swap分区 

vim  /etc/fstab   
# 将下面的内容注释掉
#/dev/mapper/centos-swap swap  

  2、修改主机名及时间同步

# 设置主机名
hostnamectl set-hostname harbor

# 时间同步
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
ntpdate -u cn.pool.ntp.org
hwclock --systohc
timedatectl set-timezone Asia/Shanghai

  3、关闭防火墙及升级内核

# 关闭防火墙 Selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
 
# 升级内核
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y&&sed -i s/saved/0/g /etc/default/grub&&grub2-mkconfig -o /boot/grub2/grub.cfg && reboot

  

二、安装Docker、Docker-compose

  1、安装Docker和Docker Compose

yum -y install yum-utils device-mapper-persistent-data lvm2
#紧接着配置一个稳定(stable)的仓库、仓库配置会保存到/etc/yum.repos.d/docker-ce.repo文件中
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 更新yum安装的相关Docker软件包&安装docker: 
yum update -y && yum install docker-ce 
#查看docker版本: 
docker -v 
# 安装docker-compose到 /usr/local/bin目录(在该目录下不需要配置环境变量) 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 
# 赋权 
chmod 755 /usr/local/bin/docker-compose 
# 查看docker-compose版本 
docker-compose -v

  2、设置开机启动并替换docker配置

# 设置开机启动并启动docker
systemctl enable docker 
systemctl start docker 

  3、追加私有仓库域名到各个服务器

echo "192.168.124.22 hub.menglong.com" >> /etc/hosts
# 验证是否追加成功
cat /etc/host

  4、将集群的各个node节点的映射也配置到各个服务器(K8S集群+镜像仓库)的hosts中

# 加载hostname:
hostnamectl set-hostname hub.menglong.com
# 验证:
hostname

  这里在本机上(windows)也设置一下域名,否则浏览器访问时就只能使用IP访问。

  5、配置daemon.json

vi /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.menglong.com"]}

三、安装Harbor

  1、下载Harbor

wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.2.0.tgz
# 移动到 /usr/local/src/
mv harbor-offline-installer-v1.2.0.tgz /usr/local/src/
tar xf harbor-offline-installer-v1.5.0.tgz

  2、修改harbor配置文件harbor.cfg

  修改以下内容

# 可以是IP或着域名,但是不能使用127.0.0.1和localhost
hostname = hub.menglong.com
# 协议用https
ui_url_protocol = https

  3、根据harbor.cfg中配置的证书存放目录(ssl_cert配置的目录):mkdir -p /data/cert/

  进入存放证书目录,开始创建证书(伪证书):

#首先生成证书私钥(这里会让输入key,直接输入即可,我输入的是menglong)
openssl genrsa -des3 -out server.key 2048
#证书的服务
openssl req -new -key server.key -out server.csr
#备份私钥
cp server.key server.key.org
#转换为证书
openssl rsa -in server.key.org -out server.key
#给证书签名
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

  4、给所有的证书授权:

chmod 755 *

  5、给K8S集群的每个节点配置镜像仓库地址(vi /etc/docker/daemon.json),添加如下内容

"insecure-registries": ["https://hub.menglong.com"]

    

   6、重启K8S集群docker

systemctl daemon-reload && systemctl restart docker

四、访问Harbor及Harbor配置

  直接访问IP即可,默认为80端口,如果要修改端口,可以修改docker-compose.yaml对应服务的映射

  管理员用户名为admin,密码为harbor.cfg配置文件中配置的密码

      

  1、创建用户:

         

   2、新建项目:

        

   3、镜像打包命令和上传

    在项目可以新增人员,可以查看镜像打包命令和上传命令

       

     打包和上传样例:

# 在K8S中登录镜像仓库:
docker login https://hub.menglong.com
# 打镜像:
docker tag lcl-galaxy-k8s:v2.0 hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0
# 推送镜像:
docker push hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

    镜像已经上传,可以将本地打包的镜像(hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0)删除

docker rmi -f c2d136b74fdd

   4、拉取镜像

     以刚才上传的镜像为例

docker pull hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

  说明:如果打开harbor不能访问,可以使用以下步骤排查:

# 1、查看harbor是否都处于up状态
docker-compose ps
# 2、如果存在状态不是UP的,使用下面命令重启
coker-compose sown
docker-compose up
# 3如果还不能访问,有可能是证书设置的问题,可以删除harbor及其文件重新生成证书并重新配置harbor
rm -rf harbor
rm -rf /data/*

五、使用dockerfile创建镜像并上传

  1、新建一个springboot项目,然后打包,并将jar包上传至服务器

   创建dockerfile文件:vi dockerfile

FROM java:8
VOLUME /tmp
ADD lcl-galaxy-k8s-0.0.1-SNAPSHOT.jar /lcl-galaxy-k8s.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/lcl-galaxy-k8s.jar"]

  说明:ADD前的是上传的jar包,后面的是要生成的镜像名称,ENTRYPOINT中第一个参数是用来标识前端项目还是后端项目的

  2、生成镜像

# 生成镜像 -t后面是镜像的名称
docker build -t lcl-galaxy-k8s .
# 查看镜像
docker images

  3、上传私有仓库

# 打镜像:
docker tag lcl-galaxy-k8s:v2.0 hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0
# 推送镜像:
docker push hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

   说明:实际生产上是在项目中添加dockerfile配置文件,然后使用jenkins进行部署。

六、验证使用镜像仓库部署Pod

  从私服中拉取镜像运行一个pod:

kubectl run lcl-galaxy-k8s --image=hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0 --port=8080

  获取pod详细信息:

kubectl get pod -o wide

      

访问pod:curl 10.244.2.26:8080/k8s/test1

      

       

posted @ 2021-07-26 22:27  李聪龙  阅读(1059)  评论(0编辑  收藏  举报