应用管理
应用管理一直是企业运维的痛点和难点。CLaaS 平台支持:部署任意副本数量的应用;自动的在多个实例之间负载均衡和自动故障修复;监控和日志可以快速的定位应用自身的问题;web 终端用于 debug;在页面直接修改应用的基本信息,比如应用的镜像,副本的数量等信息,从而极大的提高运维效率。
应用详情
在应用详情中可以查看应用的基本信息。创建一个新的应用,创建的事件也都会在这里显示。可以查看容器创建的信息、kubernetes 调度 pod 的信息。这对创建应用来说非常的有效。应用的健康和日志也都在这里显示。下面使用 apachebench 来对 my-golang
进行压力测试。
admindeMacBook-Pro:gitbook-tutorial admin$ ab -n 10000 192.168.16.173:31892/
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.16.173 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software:
Server Hostname: 192.168.16.173
Server Port: 31892
Document Path: /
Document Length: 14 bytes
Concurrency Level: 1
Time taken for tests: 60.995 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 1310000 bytes
HTML transferred: 140000 bytes
Requests per second: 163.95 [#/sec] (mean)
Time per request: 6.099 [ms] (mean)
Time per request: 6.099 [ms] (mean, across all concurrent requests)
Transfer rate: 20.97 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 3 21.6 2 1008
Processing: 1 3 21.7 2 1205
Waiting: 1 3 20.3 2 1205
Total: 3 6 30.8 4 1208
Percentage of the requests served within a certain time (ms)
50% 4
66% 5
75% 5
80% 5
90% 7
95% 9
98% 11
99% 15
100% 1208 (longest request)
然后查看监控信息,可以看到 CPU 用量明显上升了。
终端
在应用详情和应用列表中都可以打开终端,web 终端便于运维人员调试。
导出镜像
假设对镜像进行的修改,这个时候需要 docker commit
和 docker push
。CLaaS 提供了导出镜像的功能,下面导出一个镜像。
然后在镜像列表中可以看到:
镜像被导出到镜像仓库中。
修改配置
在开发的过程中会把一些经常变化的信息放在环境变量中。在 ClaaS 上可以修改镜像的名称、环境变量等信息。这里添加一个名为 version
的环境变量。
在详情中可以查看自己添加的环境变量。
应用回滚
刚才修改环境变量前的版本在应用的历史版本中可以查看。
假设应用升级的过程中出现了重大 bug 需要对应用回滚到旧版本,点击回滚后再查看应用详情。
上传文件
CLaaS 支持上传文件到容器中。在应用列表中点击上传文件,选择上传的路径,然后将文件拖进去即可。
标签管理
应用多了会变得难以管理。CLaaS 可以通过分区,应用名称搜索应用,还可以为应用打标签,然后通过标签来索引。在应用列表中点击更多,标签管理,点击新增标签。
然后点击进入标签页面,为自己的应用打上标签。这里把所有的 golang 应用添加至标签中。
然后在应用列表中通过 李白
这个标签搜索应用。
弹性伸缩
弹性伸缩(Horizontal Pod Autoscaling,hpa)是根据 CPU 的利用率来增加或者删除副本。下面为 my-golang
创建一个弹性伸缩策略。
应用当前 CPU 的利用率是 0:
然后使用 apachebench 对应用进行压测,增加 cpu 的使用率。
ab -n 10000 192.168.16.173:31892/
最后再次查看弹性伸缩的信息。
灰度部署
灰度部署指的是在应用升级过程中,新旧版本应用副本同时在线,并可手动设置新旧版本应用副本数量,用户观察新旧版本使用状况后手动选择全量更新或回滚。下面使用 my-golang
来举例说明。对原来的代码中添加了一行 fmt.Println(req.Host, req.Method)打印请求的 host 和 method:
package main
import (
"fmt"
"io"
"log"
"net/http"
)
func HelloServer(w http.ResponseWriter, req *http.Request) {
fmt.Println(req.Host, req.Method)
io.WriteString(w, "hello, world!\n")
}
func main() {
http.HandleFunc("/", HelloServer)
err := http.ListenAndServe(":80", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
然后构建一个 golang:v1.1.0 的镜像,应用列表中点击灰度部署,使用新的镜像来部署。
查看应用详情可以看到灰度部署的实例已经运行起来了。
返回到应用列表,可以选择继续修改灰度部署的实例,也可以取消灰度部署:
点击全量更新,可以看到应用的镜像已经替换成了 golang:v1.1.0 :
这个版本和上个版本的改动只是打印了一下日志信息,访问一下应用的地址,然后在应用的详情中可以查看日志:
至此,说明应用已经全量更新成功。