【Kubernetes】k8s的devops功能说明和devops搭建配置详细说明
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)最新整理电子书《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!v1.21.0去官网下载对应的kubectl版本文件需要确定这个
[root@ciserver ~]# docker images | grep hub.c.163.com/library/registry
hub.c.163.com/library/registry latest 751f286bc25e 4 years ago 33.2MB
[root@ciserver ~]#
[root@ciserver ~]# docker run -d --name registry -p 5000:5000 --restart=always -v /myreg:/var/lib/registry hub.c.163.com/library/registry
98fbe2c0b3a264b63910c10f75204dd945250e7e1a9c9b8f3845d5b892c01bad
[root@ciserver ~]#
拉取镜像及部署
- 下载gitlab中文镜像
有1.5G,拉取可能需要一点时间【也有可能中途停止,多尝试几次,我就反复拉取了很多次,浪费我个把小时才拉取完】
[root@ccx ~]# docker pull beginor/gitlab-ce
Using default tag: latest
latest: Pulling from beginor/gitlab-ce
297061f60c36: Pull complete
e9ccef17b516: Pull complete
dbc33716854d: Pull complete
8fe36b178d25: Pull complete
686596545a94: Pull complete
c9d6b299bcc6: Pull complete
0f4ecbab3b37: Pull complete
98d23afd8106: Pull complete
615484986ecc: Pull complete
5f0363938d34: Pull complete
9522d2cfa31a: Pull complete
45f229198c7d: Pull complete
Digest: sha256:e5d73a0ebc3d80fec2130993c550b9b178ae7c7971c255509e8c9feee4c0bd6b
Status: Downloaded newer image for beginor/gitlab-ce:latest
docker.io/beginor/gitlab-ce:latest
[root@ccx ~]#
- 导入镜像到客户机
[root@ciserver ~]# docker load -i gitlab-ce.tar
c8aa3ff3c3d3: Loading layer 117MB/117MB
82718dbf791d: Loading layer 15.87kB/15.87kB
3a0404adc8bd: Loading layer 14.85kB/14.85kB
cd7b4cc1c2dd: Loading layer 5.632kB/5.632kB
bf3d982208f5: Loading layer 3.072kB/3.072kB
3cb57942e900: Loading layer 75.85MB/75.85MB
fec139a70fd9: Loading layer 2.048kB/2.048kB
fcfdc7d11c7b: Loading layer 2.048kB/2.048kB
634a9b449438: Loading layer 2.048kB/2.048kB
aa3fb55f308c: Loading layer 15.87kB/15.87kB
bd9f0bd5757b: Loading layer 1.375GB/1.375GB
5cef898093ce: Loading layer 2.473MB/2.473MB
Loaded image: beginor/gitlab-ce:latest
[root@ciserver ~]# docker images | grep gitlab
beginor/gitlab-ce latest 5595d4ff803e 3 years ago 1.5GB
[root@ciserver ~]#
- 部署bit容器
代码都是基本知识的代码,就不做解释了。
[root@ciserver ~]# mkdir -p /data/gitlab/etc /data/gitlab/log /data/gitlab/data
[root@ciserver ~]# chmod 777 /data/gitlab/etc /data/gitlab/log /data/gitlab/data
[root@ciserver ~]#
[root@ciserver ~]# docker run -dit --name=gitlab --restart=always -p 8443:443 -p 80:80 -p 222:22 -v /data/gitlab/etc:/etc/gitlab -v /data/gitlab/log:/var/log/gitlab -v /data/gitlab/data:/var/opt/gitlab --privileged=true beginor/gitlab-ce
9c498bea946e8ef18c7ac96692cf9f0403afe4714c2cf3f47109868d8cf14c8c
[root@ciserver ~]#
可以看到gitlab和registry的状态都是up的
[root@ciserver ~]# docker ps | head -n3
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c498bea946e beginor/gitlab-ce “/assets/wrapper” About a minute ago Up About a minute (health: starting) 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp gitlab
98fbe2c0b3a2 hub.c.163.com/library/registry “/entrypoint.sh /etc…” 17 hours ago Up 17 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry
[root@ciserver ~]#
- 在创建此容器时,因为使用了数据卷,所以gitlab容器的配置也都保存在服务器的相关目录上了。
因为我们需要修改gitlab的配置并让其生效,所以大概等上面的gitlab运行2分钟之后,先关闭此容器,做相关操作再开启
[root@ciserver ~]# ls /data/gitlab/
data/ etc/ log/
[root@ciserver ~]# ls /data/gitlab/data/
backups gitlab-monitor nginx public_attributes.json
bootstrapped gitlab-rails node-exporter redis
gitaly gitlab-shell postgres-exporter trusted-certs-directory-hash
git-data gitlab-workhorse postgresql
gitlab-ci logrotate prometheus
[root@ciserver ~]# ls /data/gitlab/etc/
gitlab.rb ssh_host_ecdsa_key.pub ssh_host_rsa_key
gitlab-secrets.json ssh_host_ed25519_key ssh_host_rsa_key.pub
ssh_host_ecdsa_key ssh_host_ed25519_key.pub trusted-certs
[root@ciserver ~]# ls /data/gitlab/log/
gitaly gitlab-shell nginx postgresql redis sshd
gitlab-monitor gitlab-workhorse node-exporter prometheus redis-exporter unicorn
gitlab-rails logrotate postgres-exporter reconfigure sidekiq
[root@ciserver ~]#
先停止服务
[root@ciserver ~]# docker stop gitlab
gitlab
[root@ciserver ~]#
- 修改
vim /data/gitlab/etc/gitlab.rb
如下内容
[root@ciserver ~]# vim /data/gitlab/etc/gitlab.rb
#下面是修改后的最终效果
13 external_url ‘http://192.168.59.151’ #改成自己的ip
48 gitlab_rails[‘gitlab_ssh_host’] = ‘192.168.59.151’#改成自己的ip
343 gitlab_rails[‘gitlab_shell_ssh_port’] = 222 #这是物理机端口,上面我们定义的是222
#上面3样修改完以后保存退出
- 修改
vim /data/gitlab/data/gitlab-rails/etc/gitlab.yml
如下内容
[root@ciserver ~]# vim /data/gitlab/data/gitlab-rails/etc/gitlab.yml
#下面是修改后的最终效果
13 host: 192.168.59.151 #改成自己ip
#然后保存退出
- 启动gitlab服务
状态为up才正常
[root@ciserver ~]# docker start gitlab
gitlab
[root@ciserver ~]#
[root@ciserver ~]# docker ps | head -n3
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c498bea946e beginor/gitlab-ce “/assets/wrapper” 17 minutes ago Up 20 seconds (health: starting) 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp gitlab
98fbe2c0b3a2 hub.c.163.com/library/registry “/entrypoint.sh /etc…” 17 hours ago Up 17 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry
[root@ciserver ~]#
设置gitlab的root密码并登陆
- 打开gitlab设置root密码
在浏览器直接输入该虚机的ip
即可进入gitlab
我设置的root密码是ccxhero!
【注意,密码简单的话会报界面500错误】
密码设置好以后呢,就成登陆界面了
- 登陆
用上面设置的密码,用户名是root,登陆
创建一个项目并设置ssh秘钥
- 点击创建一个新项目
随便输入一个名称,选择公开,然后创建
- 上面呢一个基本项目就算创建完成了,可以通过ssh的方式拉取镜像,所以我们现在给这个镜像仓库设置秘钥
先到虚拟机上生成秘钥【就是免密登陆的那种秘钥】
#中途直接回车一次即可
[root@ciserver ~]# ssh-keygen -N “”
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:LAwIpATm3/uyXaarAp6DCwRWF4hTo1PeWmO678lAEzs root@ciserver
The key’s randomart image is:
±–[RSA 2048]----+
|=+o=.o. |
|=+=o+ |
|o=oo.= |
|o o Oo… |
| . E .o S |
|… + … |
|+ oo . o |
|o+ .+.+ + |
|… oB+=. |
±—[SHA256]-----+
[root@ciserver ~]# ls .ssh/
id_rsa id_rsa.pub known_hosts
我们要的是这个文件下的公钥信息,复制,后面要用
[root@ciserver ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQz8lAkNH/VfnbgUGG1mDQ61pjuitvZ1QGzk75uHN1ib0bNrHyqjZDlRfQa+ssfr3DrUyoX3JmyH36hw56c5ulrZmlIplvqXWz5ZYHw+gYy0btBTLqfTytCJPh6AC8KDL0OIMqubf1H1GTSuhCIn86/91u2FSjdFq6mrryfEIV6IAf5FwTzDJhhvcpeLpPM4QzDf/yarnk2fs79eKSP9QIC4UnyLTW9FxKMKCrruNczLn22od0oKQzZMzeitKunRKaYtv8w8kafKE+LeXvGun/l0aVyb2EawaYQNmw3VkYlToy9NwUCySYS25NCxTonZR84ChyBfX2Jh8u/R+LyBE9 root@ciserver
[root@ciserver ~]#
- 现在回到网页上,配置这个公钥信息
流程如下,粘贴我们上面复制的内容增加秘钥即可
增加以后如图
全局变量设置
- 回到项目页面,下拉是可以看到说明的,根据这来配置就行了
- 先安装git包
[root@ciserver ~]# yum install git -y
- 配置这2个全局变量
[root@ciserver ~]# git config --global user.name “Administrator”
[root@ciserver ~]# git config --global user.email “admin@example.com”
[root@ciserver ~]#
克隆推送
- 项目地址选择ssh,然后复制
- 回到linux主机,执行
git clone 粘贴刚才复制的内容
【第一次克隆需要输入yes,并且现在是会返回一个空版本库的提示】
这步骤呢就是获取项目的内容地址
[root@ciserver ~]# git clone ssh://git@192.168.59.151:222/root/p1.git
Cloning into ‘p1’…
The authenticity of host ‘[192.168.59.151]:222 ([192.168.59.151]:222)’ can’t be established.
ECDSA key fingerprint is SHA256:5XE5EUkPG8E+YbDcpSMslPVpOD56dEX4cJwPX7G8Zmw.
ECDSA key fingerprint is MD5:a1:37:c1:77:e7:61:a7:ad:ac:d1:84:41:0c:24:d6:da.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[192.168.59.151]:222’ (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.
#上面句翻译:您似乎克隆了一个空版本库
[root@ciserver ~]#
- 空版本是正常的,我们可以手动编辑p1这个文件哦
【后面就是在这里面放代码什么的任意内容】
[root@ciserver ~]# ls | grep p1
p1
[root@ciserver ~]# cd p1
[root@ciserver p1]# ls
[root@ciserver p1]# echo ccxhero(_) > index.html
-bash: syntax error near unexpected token `(’
[root@ciserver p1]# echo ‘ccxhero(_)’ > index.html
[root@ciserver p1]# ls
index.html
[root@ciserver p1]# cat index.html
ccxhero(_)
[root@ciserver p1]#
- 现在开始推送【推送到gitlab仓库里面】
代码说明
-
git add .
—— 推送当前路径内容 -
git commit -m "111"
——111是自定义名称 -
git push
——推送 -
第一次做会有如下报错
[root@ciserver p1]# git add .
[root@ciserver p1]# git commit -m “111”
[master (root-commit) 66b6090] 111
1 file changed, 1 insertion(+)
create mode 100644 index.html
[root@ciserver p1]#
[root@ciserver p1]# git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from ‘matching’ to ‘simple’. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
See ‘git help config’ and search for ‘push.default’ for further information.
(the ‘simple’ mode was introduced in Git 1.7.11. Use the similar mode
‘current’ instead of ‘simple’ if you sometimes use older versions of Git)
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as ‘master’.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to ‘ssh://git@192.168.59.151:222/root/p1.git’
[root@ciserver p1]#
- 上面报错提示了,需要执行2个命令,然后再重新推送,就可以了
[root@ciserver p1]# git config --global push.default matching
[root@ciserver p1]# git config --global push.default simple
[root@ciserver p1]#
[root@ciserver p1]# git add .
[root@ciserver p1]# git commit -m “111”
On branch master
nothing to commit, working directory clean
[root@ciserver p1]# git push
Counting objects: 3, done.
Writing objects: 100% (3/3), 220 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git@192.168.59.151:222/root/p1.git
- [new branch] master -> master
[root@ciserver p1]#
- 上面 推送成功以后呢,我们在网页上的gitlab页面刷新一下就可以看到这个内容了哦
所需镜像和文件下载
-
因为我的集群环境没有外网,所以我所有用到的镜像都是在有外网的服务器上docker pull以后导入到我服务器上的,所以下面看到拉取镜像的主机名和我测试用的主机名不一样,不要意外。
-
这呢只是我打包好的,里面有registry和gitlab所有需要用到的镜像,可以直接下载我打包的【不下载也没关系,下面有下载方式的】
下载地址:jenkins镜像和文件完整包.rar【本想和上面gitlab放一起的,但csdn不允许上传单个文件超过1G的文件】
拉取镜像及部署
- 拉取该镜像
[root@ccx ~]# docker pull jenkins/jenkins:2.249.1-lts-centos7
2.249.1-lts-centos7: Pulling from jenkins/jenkins
75f829a71a1c: Pull complete
8d254bb2ec6e: Pull complete
225e7670b945: Pull complete
b692399c3f8e: Pull complete
60f4ba054d35: Pull complete
c643f8846fa6: Pull complete
8d6bcfd9cf04: Pull complete
bcf49d8308b2: Pull complete
e19d3746d479: Pull complete
564cb33317a5: Pull complete
d0fb47961855: Pull complete
b77c53f1d798: Pull complete
de5994812792: Pull complete
17998489e31a: Pull complete
d3671ff917b3: Pull complete
Digest: sha256:2347f542074a2490d6b5803e366dbc045724d61ec5b4b9668ba8af2284963457
Status: Downloaded newer image for jenkins/jenkins:2.249.1-lts-centos7
docker.io/jenkins/jenkins:2.249.1-lts-centos7
[root@ccx ~]#
- 导入镜像到客户机
[root@ciserver p1]# docker load -i /root/jenkins.tar
613be09ab3c0: Loading layer 211.1MB/211.1MB
7e72cadd3040: Loading layer 332.6MB/332.6MB
1a6360904f89: Loading layer 374.8kB/374.8kB
59df8f1a2c2e: Loading layer 3.584kB/3.584kB
407412d996f1: Loading layer 9.728kB/9.728kB
e8cb66c5d1a6: Loading layer 869.4kB/869.4kB
31cb66ce2731: Loading layer 67.4MB/67.4MB
383ebb608964: Loading layer 3.584kB/3.584kB
ed2372d54ef3: Loading layer 5.897MB/5.897MB
ecaef717ccfc: Loading layer 9.728kB/9.728kB
19cf3559c8bc: Loading layer 5.12kB/5.12kB
30d3842524e8: Loading layer 3.584kB/3.584kB
3d5d0e530a7a: Loading layer 3.072kB/3.072kB
4c44a6a979b1: Loading layer 7.168kB/7.168kB
13dbb3dbcefd: Loading layer 13.82kB/13.82kB
Loaded image: jenkins/jenkins:2.249.1-lts-centos7
[root@ciserver p1]# docker images | grep jen
jenkins/jenkins 2.249.1-lts-centos7 3ef73a390e4c 14 months ago 605MB
[root@ciserver p1]#
创建数据卷所需要的目录,并把所有者和所有组改为1000
【这里为什么要改成1000,是因为容器里是一jenkins用户的身份去读数据,而在容器里jenkins的uid是1000,此镜像的dockerfile内容中也会有说明uid=1000】
[root@ciserver p1]# mkdir /jenkins;chown 1000.1000 /jenkins
- 部署
状态为up才正常。
[root@ciserver p1]# docker run -dit -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true --restart=always -v /jenkins:/var/jenkins_home jenkins/jenkins:2.249.1-lts-centos7
851e08d3f771fd31054bb035cc5fc59cf45f43561e9629c2d22b4c05779059ee
[root@ciserver p1]#
[root@ciserver p1]# docker ps | grep jen
851e08d3f771 jenkins/jenkins:2.249.1-lts-centos7 “/sbin/tini – /usr/…” 40 seconds ago Up 39 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp jenkins
[root@ciserver p1]#
配置jenkins插件【有外网的情况】
- 先直接在浏览器上输入
本机ip:8080
,看是否能访问该页面
- 上面能访问以后呢,停止该服务,做相关配置
[root@ciserver p1]# docker stop jenkins
jenkins
[root@ciserver p1]# ls /jenkins/
config.xml jobs secret.key.not-so-secret
copy_reference_file.log logs secrets
hudson.model.UpdateCenter.xml nodeMonitors.xml userContent
identity.key.enc nodes users
jenkins.install.UpgradeWizard.state plugins war
jenkins.telemetry.Correlator.xml secret.key
[root@ciserver p1]#
- 先配置
/jenkins/hudson.model.UpdateCenter.xml
改成如下内容【修改了url】
[root@ciserver p1]# cat /jenkins/hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>default
http://mirrors.tuna.tsinghua.edu.cn/jenkins
[root@ciserver p1]#
- 修改
/jenkins/updates/default.json
【我当前环境是没有updates生成,是不对的,可能因为我没有外网的原因?如果你也没有生成,重启jenkins或者删除容器重新部署,要有这个文件为止】
注:里面文件很大,内容变动比较慢,所以注意点。
[root@ciserver p1]# vim /jenkins/updates/default.json
#在第一行
#把http://www.googel.com/改成http://www.baidu.com/
- 启动jenkins
[root@ciserver p1]# docker start jenkins
jenkins
[root@ciserver p1]#
第一次登陆jenkins配置
- 登陆密码查看
[root@ciserver p1]# cat /jenkins/secrets/initialAdminPassword
05bd99aa0e7e408a8a9eb29ade914e41
[root@ciserver p1]#
- 有外网情况,选择推荐安装就行了
- 正常情况如下
会全部安装完且没有报错
-
如果有失败的,点击重试,多重试以后还是不行的话用下面方法来排查
-
1、回去检查上面的2个配置文件是否修改错误
-
2、确定无误还是不行,删除该docker容器,重部署该容器【文件里面的内容不用删,仅仅是删除容器重新部署就好了】
-
3、停止jenkins,再启动jenkins
- 上面安装推荐的插件,安装好之后会自动跳转到注册页面:
- 输入如上信息,点击保存并完成,跳转到实例配置:
不要修改内容,点击保存并完成:
- 点击开始使用【如果提示点击重启也是正常的,版本不同】
- 输入用户名和密码,点击登录。
- 登陆进来以后就进入到这个界面
- 上面插件安装完进入到这个界面有警告可以不管,也可以更新。
配置jenkins插件【没有外网的情况】
- 对了,离线安装可以看这个文章【官方介绍】,但是我现在搞不懂。。。所以我下面的方式是在网上找的资料来做的
- 首先要明白,能进入到这个界面,就证明jenkins已经安装完毕了,只是缺少插件罢了,所有离线安装,安装的是插件,而 不是 jenkins
第一次登陆jenkins配置
- 先跳过插件安装
- 离谱,明明没有插件,竟然没报错。
jenkins插件下载和导入
- 插件是放到jenkins的plugins目录下的,更新这个文件前,记得先停止jenkins容器,更新完毕以后再启动
插件下载地址
- jenkins插件下载后使用方法
将下载好的hpi后缀的插件放到jenkins的plugins目录下,具体目标要看jenkins的具体plugins具体目录【不知道在哪可以用find搜】,然后重启jenkins即可【docker stop jenkins ,然后 docker start jenkins】
#官方
http://updates.jenkins-ci.org/download/plugins/publish-over-ssh/
http://updates.jenkins.io/download/plugins/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
- 另一种方式【这个主要是查询包的名称,然后去上面地址下载】
https://plugins.jenkins.io/
插件打包导入【网上下载的jenkins包】
-
我也第一次玩这破玩意,网上搜了很多jenkins的离线安装,最后发现我tm已经安装好jenkins了,现在只是缺少插件罢了【知道现在只是缺少插件,得到这个结果我折腾了一上午】
-
这个插件内容呢是我也是在网上下载别人打包好的【但没人说用法,不过无所谓了啊,我已经搞懂原理了,这个包是全套文件,但是我现在呢主要是缺少插件,所以我直接替换插件文件即可,继续往下看】
-
下载地址:
里面内容就是这样子的,你可以和自己生成文件对比一下,发现这是全量包。
- 我现在只是缺插件而已,所以我不全量替换【也最好别全量替换,因为环境不一样,免得报错】
现在我部署好的情况文件是这样子的
#我部署的时候重定向到我的/jenkins文件了
[root@ciserver ~]# cd /jenkins/
[root@ciserver jenkins]# ls
config.xml nodeMonitors.xml
copy_reference_file.log nodes
hudson.model.UpdateCenter.xml plugins
identity.key.enc secret.key
jenkins.install.InstallUtil.lastExecVersion secret.key.not-so-secret
jenkins.install.UpgradeWizard.state secrets
jenkins.model.JenkinsLocationConfiguration.xml userContent
jenkins.telemetry.Correlator.xml users
jobs war
logs
[root@ciserver jenkins]#
#前面说过插件是放这目录下的,现在没有插件所以是kong的
[root@ciserver jenkins]# ls plugins/
[root@ciserver jenkins]#
- 现在呢就是导入我下载的这个jenkins文件到该服务器上,然后解压该zip包
[root@ciserver ~]# ls | grep jenkins.zip
jenkins.zip
[root@ciserver ~]# du -sh jenkins.zip
207M jenkins.zip
[root@ciserver ~]# mkdir jenkins-new
[root@ciserver ~]# mv jenkins.zip jenkins-new
[root@ciserver jenkins-new]# cd jenkins-new/
[root@ciserver jenkins-new]# ls
jenkins.zip
[root@ciserver jenkins-new]# unzip jenkins.zip
#大量输出
[root@ciserver jenkins-new]#
[root@ciserver jenkins-new]# ls
jenkins jenkins.zip
[root@ciserver jenkins-new]#
- 上面说了,我只需要插件,所以我最终替换plugins文件即可【因为我updates文件也没有,所以一起替换了吧】
[root@ciserver jenkins-new]# docker stop jenkins
jenkins
[root@ciserver jenkins-new]#
[root@ciserver jenkins-new]# ls
jenkins jenkins.zip
[root@ciserver jenkins-new]# ls jenkins|wc -l
48
[root@ciserver jenkins-new]# cd jenkins/
[root@ciserver jenkins]#
[root@ciserver jenkins]# cp -rf plugins/* /jenkins/plugins/
[root@ciserver jenkins]# ls /jenkins/plugins/ | wc -l
167
[root@ciserver jenkins]#
[root@ciserver jenkins]# cp -rf updates/ /jenkins/
[root@ciserver jenkins]# ls updates/|wc -l
5
[root@ciserver jenkins]#
[root@ciserver jenkins]# ls /jenkins/updates/|wc -l
5
[root@ciserver jenkins]#
- 然后启动jenkins服务即可完成导入了
[root@ciserver jenkins]# docker start jenkins
jenkins
[root@ciserver jenkins]# docker ps | grep jen
851e08d3f771 jenkins/jenkins:2.249.1-lts-centos7 “/sbin/tini – /usr/…” 4 hours ago Up 9 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp jenkins
[root@ciserver jenkins]#
- 重新登录
- 再次进来以后有这个警告了,额,忽略。
安装docker插件
- 主页面的-
manager-jenkins
中找到下面这个
- 然后在可选插件中搜索docker
安装docker和docker-build-step
有外网的话直接在周搜索更新然后点击install安装即可【我没有外网,用下面方法】
有外网的正常情况呢,就是这样的。
离线安装
-
没有外网下载docker和docker-build-step
-
首先在网页查看这2个包的版本
- 再去网站下载这2个包对应版本的hpi包
docker对应的是docker-plugin
我这已经下载好并考到主机上了
[root@ciserver plugins]# ls /root | grep docker -
delete_docker_registry_image
docker-build-step.hpi
dockerfile
dockerfile_v1
docker-plugin.hpi
[root@ciserver plugins]# ls /root | grep docker-
docker-build-step.hpi
docker-plugin.hpi
[root@ciserver plugins]#
[root@ciserver plugins]# docker stop jenkins
jenkins
[root@ciserver plugins]# mv /root/docker-* .
[root@ciserver plugins]# ls | grep docker-
docker-build-step.hpi
docker-plugin.hpi
[root@ciserver plugins]#
[root@ciserver plugins]# docker start jenkins
jenkins
[root@ciserver plugins]#
[root@ciserver plugins]# pwd
/jenkins/plugins
[root@ciserver plugins]#
报错处理
-
我最开始的报错内容没截图,翻译过来就是hpi包无法展开,我是直接删除该容器和/jenkinds下的所有内容,从头重新部署以后报错就成下面缺少依赖了,诶,这样对劲了,可以搞了。
-
上面那种方法是对的,但是会一直缺少依赖,根据提示把依赖都下载下来然后上传到该路径中
如上,我已经下载好几个了,现在还是缺,那就继续下,直到没有报错。。。
- 再放一次增加插件的流程
[root@ciserver plugins]# docker stop jenkins
jenkins
[root@ciserver plugins]# mv /root/docker-java-api.hpi .
[root@ciserver plugins]# ls | grep java
docker-java-api.hpi
[root@ciserver plugins]# docker start jenkins
jenkins
[root@ciserver plugins]#
插件打包导入【自己准备的jenkins包】
- 这个是我后面回来重新弄的,我在网上下载了上面的基础插件导入后,好不容易离线安装完docker的2个包,后面出现问题了,报错是这样子的,然后后面配置集群进行不下去了
- 我怀疑这个包有问题,所以我自己在有外网的机子上重新搭了套环境,在有外网的机器上用我的方式配置jenkins,然后我看文件大小,有333M,而我网上下载的,只有200多M,艹,网上的资源不仅没有使用说明,浪费我积分下载的东西不能用,太过分了。
[root@ccx ~]# du -sh /jenkins/
333M /jenkins/
[root@ccx ~]#
- 所以呢,这份是我花了大量时间重新弄的,这就是教程,也保证能用,自己去下载吧【和上面网上下载的一起打包了】,所以这和上面网上下载的jenkins包处,只需下载一次即可。
下载地址:
- 我导入了我打包的,确定这个包大小和我外网主机上是一样的
因为这是我自己配置的【包含docker插件】,所以我准备全量替换了【我是用tar包打包的】
前提是你使用我上面的方式部署完jenkins~
[root@ciserver jk]# du -sh *
333M jenkins
327M jenkins.tar
[root@ciserver jk]#
- 全量替换比较省事,直接替换
/jenkins
文件即可【注意,我部署的时候是吧jenkins的文件同步到我本地的/jenkins了,所以你要确认你是啥文件啊】
操作这个要先停止jenkins,后面的命令都是基础的,就不说明了,注意看过程吧。
[root@ciserver jk]# docker stop jenkins
[root@ciserver jk]# rm -rf /jenkins/*
[root@ciserver jk]# mv jenkins.tar /jenkins/
[root@ciserver jk]# cd /jenkins/
[root@ciserver jenkins]# ls
jenkins.tar
[root@ciserver jenkins]#
[root@ciserver jenkins]# tar xvf jenkins.tar
#大量输出
[root@ciserver jenkins]# ls
jenkins jenkins.tar
[root@ciserver jenkins]# du -sh *
333M jenkins
327M jenkins.tar
[root@ciserver jenkins]# rm -rf jenkins.tar
[root@ciserver jenkins]#
[root@ciserver jenkins]# mv jenkins/* .
[root@ciserver jenkins]# ls |wc -l
26
[root@ciserver jenkins]# rm -rf jenkins/
[root@ciserver jenkins]# ls |wc -l
25
[root@ciserver jenkins]# du -sh /jenkins/
333M /jenkins/
[root@ciserver jenkins]#
[root@ciserver jenkins]# ls /jenkins/plugins/ | wc -l
174
[root@ciserver jenkins]#
[root@ciserver jenkins]# ls
config.xml nodes
copy_reference_file.log plugins
hudson.model.UpdateCenter.xml queue.xml
hudson.plugins.emailext.ExtendedEmailPublisher.xml queue.xml.bak
hudson.plugins.git.GitTool.xml secret.key
identity.key.enc secret.key.not-so-secret
jenkins.install.InstallUtil.lastExecVersion secrets
jenkins.install.UpgradeWizard.state updates
jenkins.model.JenkinsLocationConfiguration.xml userContent
jenkins.telemetry.Correlator.xml users
jobs war
logs workflow-libs
nodeMonitors.xml
[root@ciserver jenkins]#
- 最后启动jenkins服务,去网站看看
[root@ciserver jenkins]# docker start jenkins
jenkins
[root@ciserver jenkins]#
- 啥都不需要配置,直接登录就行【user:admin,passwd:ccxhero!】
哈哈正常了,上面其实可以看到我内网部署的是英文版本的【缺少中文插件】,现在一切正常,警告也和外网的一样,而且docker插件也正常,nice】可以继续做下面的配置集群流程了【了解原理和重新在外网配环境到导入到内网环境一切正常,到这,花了我一天半的时间】。
配置集群
- 依次点击下面菜单
- 做如下配置流程
tcp://192.168.59.151:2376
【ip改成自己的主机】
4个步骤做完能出现版本号就可以了,这是就代表jenkins已经连接到物理机的docker了
- 最后点击save即可
-
- 在jenkins首页,依次点击系统管理-系统配置,找到docker build ,在docker build里输入
tcp://192.168.59.151:2376
,点击test connection
- 在jenkins首页,依次点击系统管理-系统配置,找到docker build ,在docker build里输入
- 最后点击保存,配置就完毕了,此时,jenkins也和docker成功关联起来了,并且此时的jenkins也具备了对docker操作的能力了,比如编译推送等。
-
后面gitlab要和jenkins进行联动,所以必须要对jenkins的安全做一些设置,依次点击-
系统管理-全局安全配置
,需要修改下面2项内容 -
1、授权策略,勾选“匿名用户具有可读权限”,点击保存
- 2、跨站请求伪造保护【注:这个跨站点伪造保护(CSFR)请求必须要关闭,但是在jenkins版本自2.2xx以后,在web界面里已经没法关闭了
所以需要在jenkins容器中关闭,具体操作流程看下面,注意看注释说明。
#先获取jenkins的脚本,如下,是/usr/local/bin/jenkins.sh
[root@ciserver jenkins]# docker top jenkins
UID PID PPID C STIME TTY TIME CMD
cuichon+ 29787 29747 0 11:02 pts/0 00:00:00 /sbin/tini – /usr/local/bin/jenkins.sh
cuichon+ 29848 29787 4 11:02 pts/0 00:03:07 java -Duser.home=/var/jenkins_home -Djenkins.model.Jenkins.slaveAgentPort=50000 -jar /usr/share/jenkins/jenkins.war
[root@ciserver jenkins]#
#然后进入到容器中并编辑这个运行脚本
[root@ciserver jenkins]# docker exec -u root -it jenkins bash
[root@a2b493904798 /]# vi /usr/local/bin/jenkins.sh
修改37行内容
#修改前
37 exec java -Duser.home=“ J E N K I N S H O M E " " JENKINS_HOME" " JENKINSHOME""{java_opts_array[@]}” -jar J E N K I N S W A R " {JENKINS_WAR} " JENKINSWAR"{j enkins_opts_array[@]}" “$@”
#修改后
37 exec java -Duser.home=“ J E N K I N S H O M E " − D h u d s o n . s e c u r i t y . c s r f . G l o b a l C r u m b I s s u e r C o n f i g u r a t i o n . D I S A B L E C S R F P R O T E C T I O N = t r u e " JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfigur ation.DISABLE_CSRF_PROTECTION=true " JENKINSHOME"−Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLECSRFPROTECTION=true"{java_opts_array[@]}” -jar J E N K I N S W A R " {JENKINS_WAR} " JENKINSWAR"{jenkin s_opts_array[@]}" “$@”
#然后保存退出
[root@a2b493904798 /]# cat /usr/local/bin/jenkins.sh | grep ‘Duser.home’
exec java -Duser.home=“ J E N K I N S H O M E " − D h u d s o n . s e c u r i t y . c s r f . G l o b a l C r u m b I s s u e r C o n f i g u r a t i o n . D I S A B L E C S R F P R O T E C T I O N = t r u e " JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true " JENKINSHOME"−Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLECSRFPROTECTION=true"{java_opts_array[@]}” -jar J E N K I N S W A R " {JENKINS_WAR} " JENKINSWAR"{jenkins_opts_array[@]}" “$@”
[root@a2b493904798 /]#
#然后退出容器,并重启jenkins
[root@a2b493904798 /]# exit
exit
[root@ciserver jenkins]# docker restart jenkins
jenkins
[root@ciserver jenkins]#
再次回到网站,就可以看到这个已经被关闭了
配置config文件
- 先查看客户端版本
[root@ciserver jenkins]# kubectl version --short
Client Version: v1.21.0
Server Version: v1.21.0
[root@ciserver jenkins]#
- 去官网下载对应的kubectl版本文件
需要确定这个包有set子命令
注:官网下载的版本好像没有set子命令,可以直接点击下载kubect:v1.21.0
[root@ciserver p1]# /root/kubectl s
scale set
[root@ciserver p1]# /root/kubectl s
- 然后把前面安全管理里创建过的kubeconfig文件kc1【也可以直接拷贝admin.conf文件】拷贝到当前主机上,和上面的kubectl放在一起
[root@ciserver jenkins]# ls /root| egrep “kc1|kubectl”
kc1
kubectl
[root@ciserver jenkins]#
[root@ciserver jenkins]# du -sh /root/kc1 /root/kubectl
8.0K /root/kc1
45M /root/kubectl
[root@ciserver jenkins]#
- 然后把这2个文件拷贝到jenkins容器里
[root@ciserver ~]# chmod +x kubectl
[root@ciserver ~]# docker cp kubectl jenkins:/
[root@ciserver ~]# docker cp kc1 jenkins:/
[root@ciserver ~]#
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
最新整理电子书
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
v1.21.0
Server Version: v1.21.0
[root@ciserver jenkins]#
- 去官网下载对应的kubectl版本文件
需要确定这个包有set子命令
注:官网下载的版本好像没有set子命令,可以直接点击下载kubect:v1.21.0
[root@ciserver p1]# /root/kubectl s
scale set
[root@ciserver p1]# /root/kubectl s
- 然后把前面安全管理里创建过的kubeconfig文件kc1【也可以直接拷贝admin.conf文件】拷贝到当前主机上,和上面的kubectl放在一起
[root@ciserver jenkins]# ls /root| egrep “kc1|kubectl”
kc1
kubectl
[root@ciserver jenkins]#
[root@ciserver jenkins]# du -sh /root/kc1 /root/kubectl
8.0K /root/kc1
45M /root/kubectl
[root@ciserver jenkins]#
- 然后把这2个文件拷贝到jenkins容器里
[root@ciserver ~]# chmod +x kubectl
[root@ciserver ~]# docker cp kubectl jenkins:/
[root@ciserver ~]# docker cp kc1 jenkins:/
[root@ciserver ~]#
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-so6bU5si-1713530159023)]
[外链图片转存中…(img-wbCoBkS8-1713530159025)]
[外链图片转存中…(img-2aSoLDE7-1713530159026)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
[外链图片转存中…(img-oHmnNBRW-1713530159027)]
最新整理电子书
[外链图片转存中…(img-5ibnzp2n-1713530159028)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
更多推荐
所有评论(0)