一如惯例,懒人一枚,
- 开启阿里云k8s服务,
- 开启阿里云容器镜像服务
- 登录master主机,创建项目文件夹.
- 在项目文件夹创建Dockerfile
vi /root/nginx/Dockerfile
From nginx
ADD nginx.conf /etc/nginx/nginx.conf
ADD saasfrontal.conf /etc/nginx/conf.d/saasfrontal.conf
VOLUME /root/nginx/frontal /usr/share/nginx/frontal #将开发打包出来的页面文件夹映射到容器内部,即可实现从外部更改即可,不用每次把文件拷贝到容器内,占用更多的时间和io.
CMD nginx -g daemon off #必须以此命令启动nginx进程,否则容器会不断loopcrash,原因在于其他如nginx -f 命令只是一次性执行,无法持续执行. - 在任意位置执行
docker build /root/nginx -t #<你的镜像服务地址>:版本号
如果不加版本号默认为lastest, build命令后必须指向你要创建的Dockerfile所在的路径,绝对路径或者相对路径均可. - docker login 到你的阿里云容器镜像服务账号下,此处应该可以用aliyun的accessID 和accessKey 进行授权访问,后续慢慢研究
- docker push 刚生成的镜像.
- 阿里云容器服务中k8s管理台创建一个服务,填写相关的标签(这组服务的名字),镜像为你创建的镜像名称, 对外服务(WAN)或者对内服务(LAN)的端口(比如外部80访问容器内部80端口)创建服务后会自动创建负载均衡,并收取按需付费的费用.
- jenkins配置ssh登录:
这里需要说明一下,
切换到jenkins用户, 以ssh-keygen -t rsa 一路默认生成公钥和私钥,将jenkins的公钥导入到本服务器的/root/.ssh/authorized_keys文件夹中,
cat /var/lib/jenkins/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
执行一次访问
ssh [email protected]<局域网ip>
提示rsa证书之类的布拉布拉布拉~,输入yes
然后在root的ssh文件夹下可以看到一个known_hosts
known_hosts
cat known_hosts通过scp拷贝到master服务器上,
内容如下:
[172.19.137.244]:10201 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOk68ZPOlrc7Yj5/qhUwVoKgTsz8+9PJkBKWxDXy3WGEDCMDtrNcBPOIVl03NoyitMB6psOYHIXwbNHoxC3Vzl0=
简单说来root的ssh目录下有这个文件就不需要你再去jenkins逐个登录到某服务器上去确认rsa证书输入那个yes了.
将authorized_keys文件和known_hosts通过scp拷贝到master服务器上,就不需要再手工以jenkins用户登录到master服务器完成一个初始化.
scp /root/.ssh/authorized_keys里,否则可能会造成服务器无法登录的问题. [email protected]<master IP>:/root/.ssh/
scp /root/.ssh/known_hosts [email protected]<master IP>:/root/.ssh/
这里注意不要偷懒复制整个文件夹, 可能会造成无法登录的问题, 对于已经使用了密钥登录的ecs服务器,还是手工cat的方式附加到root的authorized_keys里,否则可能会造成服务器无法登录的问题.
ssh-keygen -t rsa 时默认Passphrase为空, 所以这里留空即可.
Path to key 这里是要提交的是jenkins的私钥, jenkins的默认home文件夹是/var/lib/jenkins,所以私钥默认位置是/var/lib/jenkins/.ssh/id_rsa
贴入私钥的所有内容
然后在下面输入docker的ip等相关信息, 作者此服务器已关所以这里反馈连接失败. - jenkins创建一个nginx项目
- 创建完成后执行exec shell命令进行, 去除所有的项目文件夹之前的文件夹结构, 并上传项目文件夹到k8s master的nginx目录下.
- 使用kubectl 创建rc 并设置副本数量,也可以用web界面创建然后导出下载为yaml.后续只需要进行部分修改. 纯手工去写也可以.
- 执行该jenkins任务:
14.测试访问.
顺便提一嘴关于PV和PVC:
1.在阿里云创建nas云盘, - 将nas云盘设置为pv(持久存储卷)
- 以现有的pv创建pvc(持久存储卷连接代码)
- 将pvc应用给rc(副本控制器).
- jenkins将项目文件发送到master上,master配置node连接pvc并实现外部到内部的持久化存储.
思路是这样的,阿里云的k8s最低配置是3台master群集加3台node群集, 即便是按需付费一年也要差不多5000多一套, 测试不起了.
原文地址:http://blog.51cto.com/13801798/2128184
时间: 2024-10-24 22:00:45