本篇文章一起来运用容器和编排工具,搭建Serverless&容器云的基础环境,你可以尝试使用虚拟机或闲置的云服务器,一起动手。完成之后,你会获得一个相对于传统流程下管理云服务更快速更稳定,并且更安全的环境,甚至你可以将它扩展为集群环境!

image.png

系统配置:

  • CentOS 7.8 kernel 3.10.0 x86_64
  • RAM 8G
  • DISk 40G

Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。

0x00 容器环境

这里采用docker,据k8s最新通告,1.20开始将不再支持docker容器运行时,你可以尝试使用containerd或cri-o,如果你熟悉docker,会很轻松。

安装

接下来的脚本,会卸载已有docker,然后安装最新稳定版docker并启动,然后配置用户组

# 定义用户名
NEW_USER=rancher
# 添加用户(可选)
sudo adduser $NEW_USER
# 为新用户设置密码
sudo passwd $NEW_USER
# 为新用户添加sudo权限
sudo echo "$NEW_USER ALL=(ALL) ALL" >> /etc/sudoers
# 卸载旧版本Docker软件
sudo yum remove docker \
              docker-client \
              docker-client-latest \
              docker-common \
              docker-latest \
              docker-latest-logrotate \
              docker-logrotate \
              docker-selinux \
              docker-engine-selinux \
              docker-engine \
              container*
# 定义安装版本
export docker_version=18.06.3
# 对系统进行全面的更新升级,推荐升级一下(可选)
sudo yum update -y;
# 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data \
    lvm2 bash-completion;
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
# Step 3: 更新并安装 Docker-CE
sudo yum makecache all;
version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk '{print $2}');
sudo yum -y install --setopt=obsoletes=0 docker-ce-${version} docker-ce-selinux-${version};
# 如果已经安装高版本Docker,可进行降级安装(可选)
yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version};
# 把当前用户加入docker组
sudo usermod -aG docker $NEW_USER;
# 设置开机启动
sudo systemctl enable docker;
# 启动
sudo systemctl start docker

或者使用快速脚本,自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。

curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

如果安装脚本不可用,请自行从正规渠道获取最新脚本

验证

docker run hello-world

输出

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

如果docker命令可用,并且输出hello world,那么就开始下一步吧!

0x01 编排工具

编排工具暂时使用极易上手的rancher1.x版本,但官方声明只支持linux系统

安装leader

 sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

UI以及API会使用 8080 端口对外服务。下载Docker镜像完成后,需要1到2分钟的时间Rancher才能完全启动并提供服务。访问如下的URL: http://<SERVER_IP>:8080。<SERVER_IP> 是运行Rancher Server的主机的公共IP地址。
image.png

添加node

进入RancherUI配置,基础架构->添加主机即可,leader也可作为node添加,node用于调度和运行容器
image.png
image.png

验证

主机添加成功后,创建第一个应用,然后部署nginx服务,并添加LB规则,这里我们使用nginx原生镜像,直接部署
image.png
等待部署成功后,即可看到服务内容器状态为Running
image.png
image.png
然后创建默认负载均衡,请求头为解析域名,端口为lb绑定主机端口,路径为二级目录,端口为绑定容器端口
image.png
然后访问即可看到,nginx默认页面
image.png

0x01 镜像&仓库

通过需求合理配置,排除不必要的镜像依赖,可在构建和传输时更加快速

待更新