软件版本

kubectl.kubeadm.kubelet三个组件 是1.18版本

docker 是19.03.10版本

git 是1.8.3.1版本

gitlab 是10.2.2版本

jenkins 是2.222版本

registry 是2版本

实验环境:

四台服务器

master:192.168.27.10:docker+registry私有仓库+kubectl.kubeadm.kubelet三个组件

前提三个组件版本必须一致 要指定

node01:192.168.27.20:docker+kubeadm+bubelet 这两个k8s的组件 版本跟master一样

jenkins:192.168.27.30:jenkins+docker+git

gitlab:192.168.27.40:gitlab+docker+git

为什么所有都要装dockers  因为私有仓库原因 别的dockerhost想要上传下载镜像 需要配置文件指定私有仓库的ip

四台全部操作

更改主机名

hostnamectl set-hostname master

hostnamectl set-hostname node01

hostnamectl set-hostname jenkins

hostnamectl set-hostname gitlab

添加对应域名解析

cat >> /etc/hosts << EOF

192.168.27.10 master

192.168.27.20 node01

192.168.27.30 jenkins

192.168.27.40 gitlab

EOF

关闭firewalld,SElinux

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

时间同步

timedatectl set-timezone Asia/Shanghai;timedatectl set-local-rtc 0

禁用swap(关闭虚拟内存,储存在硬盘的,影响读写效率)

swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab      

free -h 查看禁用效果

配置阿里源

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

首先服务器都安装docker

我提前把docker包下载好了

这里我用的rpm安装的

mkdir /backup

把下载好的rpm 拖到/backup下

yum -y lcoalinstall *.rpm

配置阿里云镜像加速器

可以使用阿里云镜像加速器,当然,前提需要每个人都申请注册一个阿里云账号。
注册成功后,在阿里云官网上,找到`容器镜像服务`

mkdir -p /etc/docker
tee /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://1dmptu91.mirror.aliyuncs.com"]
}
EOF

重启加载和启动 docker
systemctl daemon-reload
systemctl restart docker

其他三台把以上都操作一遍

master服务器:

创建基于registry的私有仓库:

注:registry是官方打包好的服务,端口为5000,就像其他虚拟出来的web服务一样

注意,这里我们使用的是registry:2版本,还有一个registry镜像,这两个没有什么大的区别。**registry: 是用Python语言写的,registry:2使用Go 语言写的**,理论上来说,registry:2这个版本运行更快些。**

下载仓库

docker pull registry:2

运行私有仓库服务

docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2

-v:  挂载目录。  宿主机的目录(如果没有此目录会自动创建):容器内的目录。(数据卷:实现容器与宿主机之间的共享,通过一个目录"卷")

--restart=always:随着docker服务的启动而启动此容器

镜像重命名(要上传的镜像名需要注明私仓的ip)

因为我们使用的私有镜像,在上传或下载的时候,都需要我们将镜像的名称直接重命名,要注明它私有仓库的IP地址:暴露端口。切记是必须,否则将识别不到仓库而上传或下载失败。

格式为:docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]

命令:

docker tag nginx:latest 192.168.100.205:5000/nginx

编辑docker配置文件(因为默认是拉取docker官方的镜像,需要重新指定)

#初次上传命令:

docker push 192.168.27.10:5000/nginx  #上传私有仓库会报错

#以下是报错:

#The push refers to repository [192.168.27.10:5000/nginx]

#Get https://192.168.27.10:5000/v2/: http: server gave HTTP response to HTTPS client

//**上传镜像失败原因如下:**

因为docker默认是从dockehub上下载镜像的,需要在本地指定一下私有仓库的IP加端口,这是因为 Docker默认不允许非HTTPS 方式推送镜像。 如果没做这一步,会报HTTPS的错。

#编辑docker的配置文件,指定私有仓库地址

vim /usr/lib/systemd/system/docker.service

[Service]

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.27.10:5000  

#修改完成之后重新加载docker和重启

systemctl daemon-reload

systemctl restart docker

#再次上传测试

docker push 192.168.27.10:5000/nginx   

**本地dockerhost查看私有仓库镜像方法:进入到私有仓库的共享目录**

cd /registry/docker/registry/v2/repositories/

ls

其他dockerhost上传私有仓库

  这里注意,既然是私有仓库,肯定是要考虑多台DockerHost共用的情况, 如果有其他的DockerHost想要使用私有仓库,仅需要修改docker的配置文件,指定私有仓库的IP和端口即可。当然别忘了,更改过配置文件之后, daemon-reload ,restart docker服务。

###### 修改docker配置文件

vim /usr/lib/systemd/system/docker.service

[Service]

ExecStart=/usr/bin/dockerd --insecure-registry 192.168.27.10:5000  

systemctl daemon-reload

systemctl restart docker.service

docker info

#看到私仓ip即为成功

 Insecure Registries:

 192.168.27.10:5000

 127.0.0.0/8

查看仓库有哪些镜像

curl -XGET http://192.168.27.10:5000/v2/_catalog

  -X/--request  指定什么命令

  -G/--get 以get的方式来发送数据

  -E/--cert cert[:passwd] 客户端证书文件和密码 (SSL)

  -T/--upload-file  上传文件

curl http://localhost:5000/v2/_catalog      #查看本地私有仓库镜像

curl http://192.168.27.10:5000/v2/nginx/tags/list

{"name":"nginx","tags":["latest"]} //并看到详细的自定义 版本号

接下来安装k8s

master服务器和node01服务器

配置集群无密登录 master到node01无密码

ssh-keygen -t rsa

ssh-copy-id root@node01

优化内核参数

[root@master ~]# modprobe br_netfilter

cat > /etc/sysctl.d/kubernetes.conf << EOF

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-ip6tables = 1

net.ipv4.ip_forward = 1

net.ipv4.tcp_tw_recycle = 0

vm.swappiness = 0

vm.overcommit_memory = 1

vm.panic_on_oom = 0

fs.inotify.max_user_instances = 8192

fs.inotify.max_user_watches = 1048576

fs.file-max = 52706963

fs.nr_open = 52706963

net.ipv6.conf.all.disable_ipv6 = 1

net.netfilter.nf_conntrack_max = 2310720

EOF

###运行下面这条命令如果提示类似于netfilter.nf_conntrack_max 这个文件没有找不到

解决方案 重启docker 大概可能就是你的docker没有启动 前面重启失败了

sysctl -p /etc/sysctl.d/kubernetes.conf

[root@master ~]# scp /etc/sysctl.d/kubernetes.conf root@192.168.27.20:/etc/sysctl.d/

[root@node01 ~]# sysctl -p /etc/sysctl.d/kubernetes.conf

**到此基本环境准备完毕**,需要在各节点上准备`kubernetes`的`yum`源,这里推荐使用阿里云的`yum`源先来`master`节点上操作

master服务器:

Kubernetes的阿里源添加

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

部署k8s组件

前面说过 组件版本必须都一样

我直接yum安装

yum install kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 -y --nogpgcheck

systemctl start kubelet

systemctl enable kubelet

注:阿里源安装时,需要添加--nogpgcheck参数

更改docker默认Cgroup驱动(master服务器和node01服务器)

在/etc/docker/daemon.json文件中,添加一句话即可,当然这个和我们的设置加速器写在一起了。

cat >> /etc/docker/daemon.json << EOF

{

  "registry-mirrors": ["https://1dmptu91.mirror.aliyuncs.com"],

  "exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

systemctl daemon-reload

systemctl restart docker

PS: 不要忘了重新加载以及重启docker

kubeadm初始化

至此,准备工作做完,可以开始初始化,可是由于国内网络环境限制,我们不能直接从谷歌的镜像站下载镜像,有两种方法可以解决,第一种:需要我们手动从docker镜像站下载镜像,然后重新命名,也可以用脚本来实现。这里我们采用第二种:在初始化k8s的时候,指定镜像源为阿里云。

第一种:初始化时指定镜像仓库为阿里云

kubeadm init --kubernetes-version=v1.18.0 --image-repository registry.aliyuncs.com/google_containers --apiserver-advertise-address 192.168.27.10 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

第二种:或者还有其他方案将k8s集群状态配置问一个yaml文件,然后从yaml文件初始化

在初始化之前需要先把一些下载好镜像文件 提前导入好

导入本地镜像文件

docker load -i 跟名字

一个是8个包,我都提前下载直接随便拉某个目录下加载就行

coredns.tar

etcd.tar

kube-apiserver.tar

kube-controller-manager.tar

kube-proxy.tar

pause.tar

flannel.tar

kube-scheduler.tar

kubeadm config print init-defaults > kubeadm-config.yaml

vim kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta2

bootstrapTokens:

- groups:

  - system:bootstrappers:kubeadm:default-node-token

  token: abcdef.0123456789abcdef

  ttl: 24h0m0s

  usages:

  - signing

  - authentication

kind: InitConfiguration

localAPIEndpoint:

  advertiseAddress: 192.168.27.10

  bindPort: 6443

nodeRegistration:

  criSocket: /var/run/dockershim.sock

  name: master

  taints:

  - effect: NoSchedule

    key: node-role.kubernetes.io/master

---

apiServer:

  timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta2

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns:

  type: CoreDNS

etcd:

  local:

    dataDir: /var/lib/etcd

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

kind: ClusterConfiguration

kubernetesVersion: v1.18.0

networking:

  dnsDomain: cluster.local

  serviceSubnet: 10.96.0.0/12

  podSubnet: 10.244.0.0/16

scheduler: {}

---

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

mode: "ipvs"

//初始化集群

kubeadm init --config=kubeadm-config.yaml

成功后提示:

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

> PS: 下面这个结果做一个保存

kubeadm join 192.168.27.10:6443 --token a3u2oa.6fd6vb1ujbft3737 \

    --discovery-token-ca-cert-hash sha256:5509d86f19fb74d0dea02bb1884c5b8eb6a9092ed956c75fd1bb1c095c38f80b

重启k8s

systemctl restart kubelet

查看节点状态

[root@master ~]# kubectl get nodes

NAME     STATUS     ROLES    AGE    VERSION

master   NotReady   master   5m3s   v1.18.0

**可以看出master的状态是未就绪(NotReady**),之所以是这种状态是因为还缺少一个附件**flannel**,没有网络各Pod是无法通信的

//添加网络组件(flannel),组件flannel可以通过https://github.com/coreos/flannel中获取

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

我是提前下载好 kube-flannel.yml 随便拉到某目录下

kubectl apply -f kube-flannel.yml

[root@master ~]# kubectl get nodes

NAME     STATUS   ROLES    AGE   VERSION

master   Ready    master   13m   v1.18.0

以上是主节点的安装部署,然后是node01节点的安装,和加入集群,这里注意,验证,node01节点已经准备好了相关的镜像。

下面这条命令就是前面初始化做保存的 在node01上直接复制过来确定

[root@node01 ~]# kubeadm join 192.168.27.10:6443 --token njus35.kw3hxkys3urmnuob --discovery-token-ca-cert-hash sha256:05761b73b571c18eebd6972fb70323cd3c4d8e0aa7514efa2680411310424184

node节点需要几个镜像,可以手动先下载一下,或者从master节点同步

这个可以先查看下都有没有

docker images (查看镜像)

下面这三个镜像就是master管理节点上前面初始化之前要加载的其中的三个 没有可以从master上直接打包成tar包cp过来

保存镜像为tar包

docker save -o nginx.tar nginx:latest

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0

docker pull quay.io/coreos/flannel:v0.15.1

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2

等待一会去master节点验证。等待的是同步flannel网络。

[root@master ~]# kubectl get nodes (没出错的情况下 等node01 Ready 需要多等一会)

NAME     STATUS   ROLES    AGE   VERSION

master   Ready    master   18m   v1.18.0

node01   Ready    <none>   68s   v1.18.0

> PS: 确保所有pod都是running状态。(没出错的情况下 等所有running 需要多等一会)

//在master验证k8s组件 如下所示代表安装组件完整且是running状态

[root@master ~]# kubectl get pod -n kube-system

NAME                             READY   STATUS    RESTARTS   AGE

coredns-7ff77c879f-qwb6g         1/1     Running   0          60m

coredns-7ff77c879f-zhsgv         1/1     Running   0          60m

etcd-master                      1/1     Running   0          60m

kube-apiserver-master            1/1     Running   0          60m

kube-controller-manager-master   1/1     Running   0          60m

kube-flannel-ds-s6cfd            1/1     Running   0          9m16s

kube-flannel-ds-v75p7            1/1     Running   0          32m

kube-flannel-ds-xhn7c            1/1     Running   0          11m

kube-proxy-6ptb9                 1/1     Running   0          60m

kube-proxy-82lc6                 1/1     Running   0          9m16s

kube-proxy-h5g68                 1/1     Running   0          11m

kube-scheduler-master            1/1     Running   0          60m

//设置kubectl命令行工具自动补全功能

yum install -y bash-completion

source /usr/share/bash-completion/bash_completion

source <(kubectl completion bash)

echo "source <(kubectl completion bash)" >> ~/.bashrc

//记得三台节点最后要执行systemctl enable kubelet 忘记的集群就启动不了

//为了以后我们写yaml文件方便些,这里设置tab键空格个数

[root@master ~]# vim .vimrc

set tabstop=2

[root@master ~]# source .vimrc

接下来ip是30和40的都要安装git

安装git

yum -y install git

声明自己的名字和邮箱

git config --global user.name "lhy"

git config --global user.email "1793594332@qq.com"

创建版本库目录

mkdir /data

cd  /data

git init    #初始化当前目录为版本库

ls -a    

cd .git

cd ..  返回上级目录

自动生成.git目录:

branches  分支目录

config    定义目录特有的配置选项

description 仅供git web使用

HEAD   指定当前的分支

hooks   git钩子文件

info   包含一个全局排除文件(exclude)

objects   存放所有的数据内容

refs   指针文件

index     暂存区文件

接下来jenkins服务器192.168.27.30安装jenkins

安装:

复制jenkins包到虚拟机/root下

cd /root

yum -y localinstall jenkins-2.222-1.1.noarch.rpm

2.修改配置文件(默认jenkins端口为8080,如果同gitlab一起安装,需要修改端口)

vim /etc/sysconfig/jenkins

修改:

JENKINS_USER="root"

JENKINS_PORT="8081"

保存退出

3.启动jenkins

systemctl start jenkins

systemctl enable jenkins

4.加快更新

vim /var/lib/jenkins/hudson.model.UpdateCenter.xml

更改:<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>

保存退出

vim /var/lib/jenkins/updates/default.json

更改第一行:把www.google.com改成www.baidu.com

保存退出

systemctl restart jenkins

5.登录jenkins

http://192.168.27.30:8081

6.输入密码

cat /var/lib/jenkins/secrets/initialAdminPassword

复制加密密码字段,粘贴到web

7.修改admin用户密码

右上角--admin点击下拉三角--Configure--Password字段--修改密码--save保存

重新登录

选择安装插件

点左上角jenkins首页--Manage Jenkins--Manage Plugins--查看插件

  1. 复制插件包jenkins-plugins.tar到虚拟机
  1. cd /var/lib/jenkins/plugins

(2)复制jenkins-plugins.tar到目录下

(3)tar xf jenkins-plugins.tar.gz

(4)mv plugins/* ./

把插件包和另一个plugins删了

重启服务:systemctl restart jenkins 

网页刷新 看下点左上角jenkins首页--Manage Jenkins--Manage Plugins--installed(已安装的插件)含有图下的就行了

 

然后gitlab服务器192.168.27.40 安装gitlab

复制gitlab包到/ 使用rpm安装

rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

(3)vim /etc/gitlab/gitlab.rb

修改:

external_url 'http://192.168.27.40'

保存退出

(4) 配置启动 gitlab

gitlab-ctl reconfigure

(5)gitlab服务管理命令(开启/关闭/重启)

gitlab-ctl start/stop/restart

(6)登录gitlab

http://192.168.27.40

管理员:root

密码:初始配置新密码,最少8位

切记生产环境是不允许随便用root的

登录之后 两种插件选择都不选 直接×掉 跳过进入gitlab

取消注册功能

登录gitlab--admin area(顶部菜单栏小扳手图标)--左侧面板settings--Sign-up Restrictions--去除勾选sign-up enabled

--下拉选save保存

修改登录欢迎界面

登录gitlab--admin area--Appearance--填写管理员联系方式和logo--save

项目创建流程

(1)创建用户

登录gitlab--admin area--new user--添加用户名zhangsan 、邮箱

zhangsan@163.com--create--edit--修改密码

(2)创建group

登录gitlab--admin area--new group--组名dev--create group--zhangsan--权限Developer

(3)创建项目

登录gitlab--admin area--new project--组root改dev或root也行--名字web  改注意选择组

点Public (公共)

Gitlab用户在组中有五种权限:

Guest:可以创建issue、发表评论,不能读写版本库 issue(链接)

Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限

Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限 push(上传)

Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限 tag(标签)

Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

Guest:来宾

Reporter: 报告

Developer: 开发

Master: 超级管理员

Owner: 你(创建组的人)

Gitlab中的组和项目有三种访问权限:

Private:只有组成员才能看到

Internal:只要登录的用户就能看到

Public:所有人都能看到

Private: 私有

Internal: 内部

Public: 公用

上传ssh-key

本地用户创建秘钥:ssh-keygen -t rsa

复制公钥内容:cat /root/.ssh/id_rsa.pub

管理员登录:右上角--用户--settings--SSH Keys--粘贴进去

点左上角Gitlab首页---点你创的项目web---点web里面初始的RENAME.md文件---点Edit--改个名字叫index.html再随便写点内容 看下图

 

cd /data

克隆下载项目

git clone http://192.168.27.40/root/web.git

修改文件内容,再推送上传代码(管理员身份)

cd web/

cat index.html (就有你刚刚随便写的内容)

vim index.html 添加点东西提交上传

git add .

git commit -m ”add index.html”

git push -u origin master (把改动的内容推送到远程仓库)

下载同步代码

git pull origin master

ls

cat index.html

接下来jenkins关联gitlab

(1)jenkins操作:点击左上角logo--回到主页面--选择新项目“New Item”--填写项目名web--选择项目类型“Freestyle project”--save保存

 (2)jenkins服务器也创建密钥复制公钥到zhangsan里

上传ssh秘钥

本地用户创建秘钥:ssh-keygen -t rsa

复制公钥内容:cat /root/.ssh/id_rsa.pub

gitlab操作:zhangsan登录:右上角--用户--settings--SSH Keys--粘贴进去

 (3)gitlab和jenkins两台服务器互相建立关系

ssh-copy-id root@192.168.27.40

ssh-copy-id root@192.168.27.30

(2)gitlab操作:点web配置项目--源代码管理Source Code--git--URL填写gitlab存储库网址(git@192.168.27.40:web/web.git)--报红字错误,则需要添加私钥认证--Add

--Kind选password--填写用户root和密码--ADD添加--Credentials身份选--save保存--退出去重新看有没有红

jenkins:

web项目-- configure -- build triggers --Build triggers选最长选项 -- 点击高级Advanced--选择Filter branches by name --在include填写master -- 点击generate生成令牌-复制令牌--往上划查看触发器顶部url路径

-- save保存

159ca7b5548fec72c8d81386d4256376  用自己的令牌和URL路径

http://192.168.27.20:8081/project/web

gitlab网站

web项目 --  settings-- integrations集成 -- 把复制的令牌和url粘贴过来 -- add webhook

 

 

/此时如果直接添加可能会报错。添加完成后提示本地连接不了,因为gitlab默认设置不允许向自 己 发 送 web hook!

往下要修改gitlab & jenkins的设置。

 

 

 

 

 

gitlab网站

web项目 --  settings-- integrations集成 -- 把复制的令牌和url粘贴过来 -- add webhook

 

 测试下和jenkins连通性 

 报200 就正常了

接下来jenkins网站

选择web项目--左侧选择“build now”--下面构建历史出现蓝色标志--选择蓝色标志下拉列表--console output--输出执行过程

红色就是失败

(4)jenkins服务器上查看/var/lib/jenkins/workspace目录,会有项目web同名文件夹,保存git clone 的所有代码  jenkins和gitlab 就关联了

 jenkins服务器 也需要给邮箱和用户

git config --global user.email "1763418210@qq.com"

git config --global user.name "panlong"

(1)

mkdir /data

cd /data

git init

  1. 把文件下载下来

  git remote add origin http://192.168.27.40/web/web.git

回到master服务器上

编写一个yaml文件

用deployment资源replicas:2(两个副本)和service资源 部署镜像服务

mkdir /opt/deploy

cd /opt/deploy

vim deploy.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: panlong

  labels:

    app: httpd

spec:

  selector:

    matchLabels:

      app: httpd

  replicas: 2

  template:

    metadata:

      labels:

        app: httpd

    spec:

      containers:

        - name: panlong

          image: 192.168.27.10:5000/httpd1:v1

          imagePullPolicy: Always

---

kind: Service

apiVersion: v1

metadata:

  name: panlong-svc

spec:

  type: NodePort

  selector:

    app: httpd

  ports:

    - protocol: TCP

      port: 80

      targetPort: 80

      nodePort: 30023

写一个dockerfile文件

mkdir /dockerfile

vim file1

FROM httpd:latest

RUN echo panlong > /usr/local/apache2/htdocs/index.html

EXPOSE 80

生成一个镜像

[root@master ~]# docker build -t 192.168.27.10:5000/httpd1:v1 .

上传到私库

[root@master ~]# docker push 192.168.27.10:5000/httpd1:v1

私有仓库存储位置 ls /registry/docker/registry/v2/repositories/

有个httpd1 里面就有你生成的镜像

jenkins服务器192.168.27.30跟master服务器192.168.27.10做个免密登录

ssh-copy-id root@192.168.27.10

在jenkins服务器 编辑个脚本 (jenkins的构建动作)

vim /sctipts/jb.sh

#!/bin/bash

echo From httpd:latest > /dockerfile/file1

cp -rp /var/lib/jenkins/workspace/web/index.html /dockerfile/

echo COPY ./index.html /usr/local/apache2/htdocs/ >> /dockerfile/file1

echo EXPOSE 80 >> /dockerfile/file1

docker build -f /dockerfile/file1 -t 192.168.27.10:5000/httpd1:v1 .

docker push 192.168.27.10:5000/httpd1:v1

ssh root@192.168.27.10 kubectl delete deployment panlong

ssh root@192.168.27.10 kubectl delete svc panlong-svc

ssh root@192.168.27.10 kubectl apply -f /opt/deploy/deploy1.yaml

## docker build -t 192.168.27.10:5000/httpd1:v1 .  生成镜像 传到到私有仓库

## docker push 192.168.27.10:5000/httpd1:v1 上传镜像到私有仓库

##dockerfile的COPY命令 不能跟绝对路径 会报错 需要把复制的文件写在跟dockerfile同一目录下 所以有了前面的cp -rp命令 这个复制的文件就是jenkins跟gitlab关联的代码文件

save 保存

 

 

 

 

 

======================================

 -==================================

 ============================================

 

Logo

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

更多推荐