3

通过kubedog助力应用部署的状态监测与打印

 3 years ago
source link: http://www.eryajf.net/5383.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
通过kubedog助力应用部署的状态监测与打印 |坐而言不如起而行! 二丫讲梵
> 术业专攻 > 云计算 > kubernetes > 通过kubedog助力应用部署的状态监测与打印
本文预计阅读时间 9 分钟
  • 官方地址:https://github.com/werf/kubedog
  • 功能说明:Kubedog是一个库,用于监视和跟踪CI / CD部署管道中的Kubernetes资源。同时它也提供了一个二进制cli程序,让我们能够快速通过命令行对刚刚构建成功的应用状态做一些观测与打印。

官方在github已经放置了不同系统的二进制文件,直接下载添加权限即可使用,可谓开箱即用。

  1. $ wget https://storage.yandexcloud.net/kubedog/targets/releases/v0.5.0/kubedog-linux-amd64-v0.5.0
  2. $ mv kubedog-linux-amd64-v0.5.0 /usr/bin/kubedog
  3. $ chmod +x /usr/bin/kubedog

添加环境变量,如果环境变量不固定,也可以在运行的时候通过参数 --kube-config 指定:

  1. $ echo 'KUBEDOG_KUBE_CONFIG=/root/.kube/config' >> /etc/profile
  2. $ source /etc/profile

查看参数:

  1. $ kubedog -h
  2. Usage:
  3. kubedog [command]
  4. Available Commands:
  5. follow
  6. help Help about any command
  7. multitrack Track multiple resources using multitrack tracker
  8. rollout
  9. version
  10. Flags:
  11. -h, --help help for kubedog
  12. --kube-config string Path to the kubeconfig file (can be set with $KUBEDOG_KUBE_CONFIG).
  13. --kube-context string The name of the kubeconfig context to use (can be set with $KUBEDOG_KUBE_CONTEXT).
  14. --logs-since string A duration like 30s, 5m, or 2h to start log records from the past. 'all' to show all logs and 'now' to display only new records (default). (default "now")
  15. -n, --namespace string If present, the namespace scope of a resource. (default "default")
  16. --output-prefix string Arbitrary string which will be prefixed to kubedog output.
  17. -t, --timeout int Timeout of operation in seconds. 0 is wait forever. Default is 0. (default -1)
  18. Use "kubedog [command] --help" for more information about a command.

这里重要的两个参数是:followrollout,接下来通过示例分别体验一下两个参数。

1,follow

follow可以跟踪资源从创建到Ready对外提供服务的整个过程,并将pod日志打印。

首先创建一个简单的示例程序:

  1. $ kubectl apply -f tools.yml
  2. deployment.extensions/tools created

然后使用命令监听程序的事件:

  1. $ kubedog follow -n test deployment tools
  2. # deploy/tools added
  3. # deploy/tools rs/tools-55887db99 po/tools-55887db99-h5knt added
  4. # deploy/tools new rs/tools-55887db99 added
  5. # deploy/tools become READY

注意:这个参数进入的是终端的前台监听,不会退出终端。

2,rollout

rollout与follow对比,不会输出pod运行日志,直接打印pod状态。

首先创建一个简单的示例程序:

  1. $ kubectl apply -f tools.yml
  2. deployment.extensions/tools created

然后使用命令监听程序的事件:

  1. $ $kubedog rollout track -n test deployment tools
  2. # deploy/tools become READY
  3. $ echo $?
  4. 0

注意:我们通常可以判断这个命令的返回值来判断应用部署后的状态。另外一点就是这个命令不会在前台监听,而且在Jenkins流水线中,还会输出pod对应的日志内容。

71cfeb93ly1gkpurcz6xxj20nb0xc7b7.jpg

我们可以直接在构建命令后边添加如下命令示例:

  1. stage('基于文件部署') {
  2. when {
  3. environment name: 'BUILD_AS_FILE',value: 'true'
  4. }
  5. steps {
  6. dir("$WORKSPACE/deploy-k8s-yaml"){
  7. script {
  8. try {
  9. ansiColor('xterm') {
  10. configFileProvider([configFile(fileId: "${K8S_AUTH}", targetLocation: "admin.kubeconfig")]){
  11. sh """
  12. kubectl --kubeconfig admin.kubeconfig apply -f $WORKSPACE/deploy-k8s-yaml/${YAML_PATH}/${SERVICE_NAME}.yaml
  13. kubedog --kube-config admin.kubeconfig rollout track -n ${DEPLOY_ENV} deployment ${SERVICE_NAME}
  14. """
  15. }
  16. }
  17. }catch(exc) {
  18. env.REASON = "基于YAML文件部署出错"
  19. throw(exc)
  20. }
  21. }
  22. }
  23. }
  24. }

这样在应用部署之后,我们就可以很直观地观测到它在集群中的状态变化了。

具体日志这里就不做展示了。


weinxin

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明通过kubedog助力应用部署的状态监测与打印

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK