使用阿里云k8s服务部署项目以及pvc持久化思路.

一如惯例,懒人一枚,

  1. 开启阿里云k8s服务,
  2. 开启阿里云容器镜像服务
  3. 登录master主机,创建项目文件夹.
  4. 在项目文件夹创建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 命令只是一次性执行,无法持续执行.
  5. 在任意位置执行
    docker build /root/nginx -t #<你的镜像服务地址>:版本号
    如果不加版本号默认为lastest, build命令后必须指向你要创建的Dockerfile所在的路径,绝对路径或者相对路径均可.
  6. docker login 到你的阿里云容器镜像服务账号下,此处应该可以用aliyun的accessID 和accessKey 进行授权访问,后续慢慢研究
  7. docker push 刚生成的镜像.
  8. 阿里云容器服务中k8s管理台创建一个服务,填写相关的标签(这组服务的名字),镜像为你创建的镜像名称, 对外服务(WAN)或者对内服务(LAN)的端口(比如外部80访问容器内部80端口)创建服务后会自动创建负载均衡,并收取按需付费的费用.
  9. jenkins配置ssh登录:
    使用阿里云k8s服务部署项目以及pvc持久化思路.
    这里需要说明一下,
    切换到jenkins用户, 以ssh-keygen -t rsa 一路默认生成公钥和私钥,将jenkins的公钥导入到本服务器的/root/.ssh/authorized_keys文件夹中,
    cat /var/lib/jenkins/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
    执行一次访问
    ssh root@<局域网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里,否则可能会造成服务器无法登录的问题. root@<master IP>:/root/.ssh/
    scp /root/.ssh/known_hosts root@<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等相关信息, 作者此服务器已关所以这里反馈连接失败.
    使用阿里云k8s服务部署项目以及pvc持久化思路.
  10. jenkins创建一个nginx项目
  11. 创建完成后执行exec shell命令进行, 去除所有的项目文件夹之前的文件夹结构, 并上传项目文件夹到k8s master的nginx目录下.
    使用阿里云k8s服务部署项目以及pvc持久化思路.
    使用阿里云k8s服务部署项目以及pvc持久化思路.
  12. 使用kubectl 创建rc 并设置副本数量,也可以用web界面创建然后导出下载为yaml.后续只需要进行部分修改. 纯手工去写也可以.
  13. 执行该jenkins任务:
    使用阿里云k8s服务部署项目以及pvc持久化思路.
    使用阿里云k8s服务部署项目以及pvc持久化思路.
    14.测试访问.
    使用阿里云k8s服务部署项目以及pvc持久化思路.
    顺便提一嘴关于PV和PVC:
    1.在阿里云创建nas云盘,
  14. 将nas云盘设置为pv(持久存储卷)
  15. 以现有的pv创建pvc(持久存储卷连接代码)
  16. 将pvc应用给rc(副本控制器).
  17. jenkins将项目文件发送到master上,master配置node连接pvc并实现外部到内部的持久化存储.
    思路是这样的,阿里云的k8s最低配置是3台master群集加3台node群集, 即便是按需付费一年也要差不多5000多一套, 测试不起了.

猜你喜欢

转载自blog.51cto.com/13801798/2128184