创建边缘容器

更新时间: 2024-04-08 11:49:42

通过创建边缘容器,您可以将容器应用连接至自己的站点域名,并使用该域名对容器应用进行访问。

重要

边缘容器目前处于内测阶段,我们将向符合测试条件的用户免费提供相关服务。如有需要,请联系客服申请开通。

创建应用

应用是管理边缘容器的基本单位,您需要将全站加速 DCDN域名绑定至某个应用,从而使应用对外提供服务。

  1. 登录DCDN控制台

  2. 在左侧导航栏,点击边缘计算 > 边缘容器,单击创建应用

  3. 填写应用名称服务端口请求端口等信息,单击下一步

    参数

    说明

    应用名称

    请以小写字母开头,支持小写字母、数字、“-”符号组合。以小写字母或数字结尾,长度6~128字节。

    服务端口

    容器内部对外提供服务的端口信息,端口范围1~65535。

    请求端口

    用户通过公网访问的端口信息,可选80或443。

    image

  4. 配置健康检查相关信息,单击确定,创建应用。

    参数

    说明

    请求类型

    健康检查使用的HTTP请求类型,目前支持使用GET或HEAD两种请求类型。

    健康检查路径

    健康检查发起的HTTP请求的URI信息。

    健康检查端口

    健康检查端口,端口范围1~65535。

    响应超时时间(秒)

    健康检查发起HTTP请求后,在该超时时间范围内未收到响应则认为健康检查失败。

    间隔时间(秒)

    两次健康检查发起的间隔时间。

    成功后恢复次数

    当容器处于删除状态时,健康检查成功次数达到该值后则认为容器可用,将重新恢复容器服务。

    失败后删除次数

    当容器处于服务状态时,健康检查失败次数达到该值后则认为容器不可用,将删除该容器。

    请求host头

    健康检查发起的HTTP请求的Host头信息。

    期望状态码

    如果收到的健康检查HTTP响应码与期望状态码一致则认为本次健康检查成功,否则则认为失败。

上传镜像

镜像是一种容器化标准交付物,用于打包应用程序及其依赖的环境。可以基于Dockerfile文件将应用构建为容器镜像并上传到容器镜像仓库中,然后您可以容器镜像并启动容器。

  1. 编写代码,注意服务端口健康检查创建应用步骤中保持一致。

package main

import (
	"bytes"
	"net/http"
	"strconv"
	"strings"

	"github.com/gorilla/mux"
)

func main() {
	router := mux.NewRouter()
	router.Path("/livez").HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
		rw.WriteHeader(http.StatusOK)
		rw.Write([]byte("OK"))
	})
	router.Path("/pi").HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
		nums := req.URL.Query()["n"]
		if len(nums) == 0 {
			rw.Write([]byte("3.14"))
			return
		}
		n, _ := strconv.Atoi(nums[0])
		rw.Write([]byte(formatPi(computePi(n))))
	})

	http.ListenAndServe("0.0.0.0:8081", router)
}

func formatPi(i, N int, pi []int) string {
	sb := new(bytes.Buffer)
	sb.WriteString("3.")
	for i++; i < N-2; i++ {
		s := strconv.Itoa(pi[i])
		s = strings.Repeat("0", 4-len(s)) + s
		sb.WriteString(s)
	}
	return sb.String()
}

func computePi(n int) (i, N int, pi []int) {
	N = n/4 + 3
	pi = make([]int, N)
	var j, k, p, q, r, t, u, v int
	a, b := [2]int{956, 80}, [2]int{57121, 25}
	s := 2
	M := 10000
	e := make([]int, N)
	for {
		s--
		if s+1 == 0 {
			break
		}
		k = s
		e[0] = a[s]
		i = N
		for {
			i--
			if i == 0 {
				break
			}
			e[i] = 0
		}
		q = 1
		for {
			j = i - 1
			if i >= N {
				break
			}
			r, v = 0, 0
			for {
				j += 1
				if j >= N {
					break
				}
				p = r*M + e[j]
				e[j] = p / b[s]
				t = v*M + e[j]
				u = t / q
				r = p % b[s]
				v = t % q
				if k != 0 {
					pi[j] += u
				} else {
					pi[j] -= u
				}
			}
			if e[i] == 0 {
				i++
			}
			q += 2
			if k != 0 {
				k = 0
			} else {
				k = 1
			}
		}
	}
	for {
		i--
		if i == 0 {
			break
		}
		t = pi[i] + s
		pi[i] = t % M
		if pi[i] < 0 {
			pi[i] += M
			s = t/M - 1
		} else {
			s = t / M
		}
	}
	return
}
  1. 编写Dockerfile,构建镜像并上传到镜像仓库。

FROM alpine:latest
ENV TZ Asia/Shanghai
ADD lambda .
CMD ./lambda
export GOARCH="amd64" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux"; go build -o lambda main.go
docker build -t *****.alibaba-inc.com/***/lambda:v0.1 .
docker push *****.alibaba-inc.com/***/lambda:v0.1

创建版本

创建版本是应用发布的基础,您可以在不同版本中配置不同的镜像、算力规格、探测方法等。

说明

在某一版本发布比例达到100%前,不允许发布其它版本,但允许进行回滚操作。

  1. 在边缘容器列表中,单击应用ID或操作列的详情

  2. 版本发布页签中单击创建版本

  3. 填写版本名称版本备注镜像信息,点击确定,完成版本创建。

    参数

    说明

    版本名称

    支持输入长度为 6 - 128 位的小写英文、数字、中划线(-),且需英文开头,英文或数字结尾,版本名称不可重复

    镜像地址

    容器拉取镜像的地址信息,镜像拉取目前只支持阿里边缘云内部镜像平台。

    算力规格

    您需要根据应用规模,选择不同的CPU、内存规格,目前支持的规格包括1C2G、2C4G、2C8G、4C8G、4C16G、8C16G、8C32G,不同算力规格的费用不同。

    启动命令

    该指令运行于容器创建后,用于启动服务进程的脚本命令。

    postStart

    该指令运行于容器创建后,启动命令执行前,通常用于系统的初始化。

    preStop

    该指令运行于容器销毁前,通常用于应用的优雅退出。

    探测方法

    支持HTTP、TCP、自定义脚本三种探测方式。

    • HTTP

      • 探测URL:探测路径,例如“/test”。

      • 探测端口:范围1-65535。

      • 探测HOST:HTTP请求Host头信息。

      • SCHEME:支持HTTP或HTTPS。

      • HEADER:用于自定义探测HTTP请求头。

    • TCP

      • 探测端口:范围1~65535。

    • COMMAND

      • 即自定义脚本,脚本返回0则认为探测成功,否则探测失败。

    探测时间

    表示容器创建多长时间后开始进行探测,通常应用于服务进程启动时间较长的场景。

    超时时间

    • 使用HTTP探测方法时此值表示响应超时时间。

    • 使用TCP探测方法时此值表示TCP握手超时时间。

    • 使用COMMAND探测方法时此值表示脚本运行超时时间。

    探测间隔

    两次探测发起的间隔时间。

    成功次数

    当容器处于摘除状态时,探测成功次数达到该值后则认为容器可用,将重新恢复容器服务。

    失败次数

    当容器处于服务状态时,探测失败次数达到该值后则认为容器不可用,将摘除该容器。

    image

发布、回滚版本

发布版本

边缘容器版本发布支持灰度发布,您可以在发布时对发布比例进行控制。

  1. 在边缘容器列表中,单击应用ID或操作列的详情,进入版本发布页签。

  2. 首次发布版本前,请先单击初始化状态区域的资源初始化,初始化流程大概需要15分钟,当初始化进度显示为deployed时,表示初始化已完成。

  3. 单击发布版本区域的发布,选择要发布的版本和发布比例,单击发布按钮开始发布,当发布状态显示为published时表示本次发布完成。image

    说明

    边缘容器支持灰度发布,当发布比例达到100%时表示全网发布结束,已全网发布的版本将成为基线版本。

回滚版本

对于已发布但发布比例未达到100%的版本,可以通过单击回滚按钮进行回滚操作,当发布状态显示为rollbacked时表示回滚完成,回滚后的版本为当前基线版本。

触发器

触发器是边缘容器对外提供服务的方式。域名绑定功能允许您将容器应用连接至自己的站点域名,在完成域名绑定后,您可以直接使用该域名对容器应用进行访问,全站加速 DCDN将自动在站点下添加一条绑定域名的DNS记录。

  1. 在边缘容器列表中,单击应用ID或操作列的详情

  2. 触发器页签中单击添加域名

  3. 填写访问容器时使用的域名,单击确定image

  4. 完成域名添加后,我们将在域名对应的站点下创建新的DNS记录。此时,您可以通过该域名访问您的边缘容器应用。