文章目录
-
- 一、搭建需要准备
- 二、搭建Nexus私服镜像库
- 三、利用DockerFile创建镜像上传私服
- 四、创建Deployment类型yml进行创建pod
一、搭建需要准备
虚拟机 | ip | 配置 |
---|---|---|
k8s-master | 192.168.230.127 | cpu4/4以上,内存8/8以上 |
k8s-node1 | 192.168.230.128 | cpu4/4以上,内存8/8以上 |
k8s-node2 | 192.168.230.129 | cpu4/4以上,内存8/8以上 |
nexus | 192.168.230.130 | cpu4/4以上,内存4/4以上 |
二、搭建Nexus私服镜像库
我的私服搭建是基于docker搭建的,所以得先安装docker。
-
安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce-18.06.1.ce-3.el7 systemctl enable docker && systemctl start docker cat > /etc/docker/daemon.json << EOF {"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]} EOF
-
关闭seLinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 setenforce 0 # 临时
-
安装Nexus
docker search nexus # 搜索nexus,选择下载数最多的第一个sonatype/nexus3 docker pull sonatype/nexus3 docker run -id -u root -p 8081:8081 -p 8082:8082 --privileged=true -v /opt/nexus-data:/nexus-data --restart=always sonatype/nexus3
注意: 运行镜像命令要加上-u root和–privileged=true,否则会运行失败。
解释:
-d 后台运行
-p 端口号映射 8081 管理界面使用 8082 nexus3私服使用
-v 文件夹映射 私服的文件都保存到本地文件夹/opt/nexus-data中
–restart=alwarys 自动重启
sonatype/nexus3 镜像名称 -
Neuxs管理工具
用浏览器访问 ip:8081 进入Nexus管理页面,点击右上角的Sign in进行登录。首次登录,到映射目录(/opt/nexus-data)下找到admin.password,打开可以看到admin的默认密码,登录过程中根据提示修改为自己密码。 -
创建存储对象
-
创建Docker仓库
-
设置权限
-
查看私服仓库内容
三、利用DockerFile创建镜像上传私服
-
配置k8s集docker的daemon.json文件。
vi /etc/docker/daemon.json { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"], "insecure-registries": ["192.168.230.130:8082"] #这里放私服ip }
重启docker:
systemctl daemon-reload #重载docker配置 systemctl restart docker #重启docker服务 docker info #查看docker信息确认仓库是否添加
-
把项目jar包用DockerFile的方式创建镜像。
编写DockerFile脚本代码:
FROM java:8 #基础镜像,如果本地仓库没有,会从远程仓库拉取 MAINTAINER wei.zhou #创建人 ADD demo-0.0.1-SNAPSHOT.jar demo.jar #第一个是jar包名称,第二个是重命名名称 EXPOSE 8080 #暴露端口 ENTRYPOINT ["java","-jar","demo.jar"]
构建镜像
docker build -f Dockerfile文件位置 -t 镜像名:版本 . 【末尾有个点,一点要注意】这里可以看一下我之前的Kubernetes/k8s(三)k8s创建jar包docker镜像的pod
-
登录私服并上传镜像。
docker login 192.168.230.130:8082 #登录私服仓库
发布之前需要把镜像名称修改为私服地址,
格式为:服务器地址:服务器端口/镜像名称:版本
命令为: docker tag 镜像id(build好的镜像的id) 镜像新名称最后使用上传命令 docker push 镜像名称:TAG
docker push 192.168.230.130:8082/demo:latest
四、创建Deployment类型yml进行创建pod
-
创建secret秘钥
kubectl create secret docker–registry <regsecret-name> --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>。
注意: 每一个空间都需要创建各自的秘钥!
e.g: --docker-server=192.168.230.130:8082 (不需要加http://) -
yaml中使用imagePullSecrets
--- apiVersion: apps/v1 kind: Deployment metadata: name: local-demo namespace: default spec: replicas: 1 selector: matchLabels: app: lodemo release: stabel template: metadata: labels: app: lodemo release: stabel env: test spec: imagePullSecrets: - name: docker-local containers: - name: lodemo image: 192.168.230.130:8082/demo:latest imagePullPolicy: IfNotPresent ports: - name: http containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: lodemo namespace: default spec: type: NodePort selector: app: lodemo release: stabel ports: - name: http port: 8080 targetPort: 8080 nodePort: 30080 ---
-
运行yml
kubectl apply -f xxxx.yml