从零搭建阿里云托管版k8s集群-部署思路(三)

预备知识

  • oss概念
  • docker基本知识
  • k8s基本知识
  • yaml文件格式

部署思路

本文不涉及持续集成,尽量简单化处理。

原定思路

项目文件存放:nas
日志文件存放:nas

优点:

  • 项目文件使用nas存放,如果集群中存在多个项目,可以使用动态供给,不用为每一个项目单独创建一套pv。(具体请参看上一篇文章)
  • 日志文件集中存放在nas中,可以方便集中查询和管理。

缺点

  • 阿里云的sotrage class在使用nas的时候,不能通过命令行创建(目前是),在创建的时候遇到不少问题
  • nas是内网访问的,需要再搭建一套部署工具,来同步项目代码到内网服务器才行
  • 阿里的日志服务,不支持采集挂载到nas中的日志。
最终方案

项目文件存放:oss
日志文件存放:容器中的目录

优点:

  • 项目文件可以直接用oss的图形界面工具,由项目负责人负责打包项目文件
  • 使用阿里云日志系统,直接采集容器内部日志,省去自己搭建日志系统

缺点

  • 需要为每个项目创建不同的pv和pvc(还好是可以命令使用yaml文件创建)

部署过程

开通oss

建议买一个oss的存储包,40g每年是9块钱,足够使用。这里我们用数据卷并不是用来

oss中目录格式

.
├── code
│   ├── admin.zip
│   ├── api.zip
│   └── wap.zip
├── nginx-admin.conf
├── nginx-wap.conf
└── nginx-api.conf

code文件夹中放置了三个项目代码,都是zip格式,外层有三个nginx的网站配置文件

api部署文件如下,其他类似


apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-api
  namespace: test
  labels:
    name: test-api
spec:
  replicas: 1
  selector:
    matchLabels:
      name: test-api
  template:
    metadata:
      labels:
       name: test-api
       project-group: test
    spec:
      containers:
      - name: test-api
        image: registry.cn-hangzhou.aliyuncs.com/xxx/test:nginx-php
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        resources:
          requests:                         
            cpu: 500m
        volumeMounts:
        - mountPath: /data/www
          name: data-www1
        command: ["/bin/sh","-c"]
        args: #参数
          - |
            cp /data/www/nginx-api.conf /etc/nginx/sites-enabled/
            mkdir -p /var/www/html/
            cp /data/www/code/api.zip /var/www/html/
            unzip /var/www/html/api.zip -d /var/www/html/
            mkdir -p /data/logs/nginx
            chmod -R 777 /var/www/html/ /data/logs
            php-fpm -y /usr/local/etc/php-fpm.d/www.conf -D
            /usr/sbin/nginx -g 'daemon off;'
      volumes:
        - name: data-www1
          persistentVolumeClaim:
            claimName: test-oss-pvc2

这里我着重解释一下,怎么在pod中运行命令部署文件

在项目部署到pod中的时候,有时候是需要执行一些命令的。很多对k8s和docker不了解的人,在这里容易卡住。这里最重要的一点就是要知道docker的一些运行原理如下:

  • 怎么执行多条命令?如上,多行命令执行格式都已经有了
  • docker如果没有运行在前台的命令,将会把自己停掉,这是因为docker认为自己没有事情可以做了。所以在命令的最后,要执行一个运行在前台的命令,比如tail -f XXX,或者像是我这个文件中的 /usr/sbin/nginx -g ‘daemon off;’ 使nginx在前台运行(不以守护模式运行)。
  • 这里我挂载的这个pvc:test-oss-pvc2,中就存放了项目文件和nginx文件。关于pv和pvc的问题,请参考上一篇文章。

我的日志文件存放在/data/logs中,所以我使用阿里云日志服务,采集的就是这里面的日志。

容器镜像

这里我用的是自己修改过的镜像文件,也可以用公共镜像

阿里云镜像服务

控制台左上角菜单按钮->产品与服务->搜索:容器镜像服务

首次开通需要输入容器服务密码,用户名为阿里云用户名

开通后->创建镜像仓库,选好名字->选择云端也可以从本地推送(我是本地创建的,是本地推送了一份)->管理

里面有怎么推送本地仓库到线上仓库的教程,推送以后会生成镜像链接,就可以像我上面一样使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值