简介

上一篇文章讲解了如何使用Azure DevOps持续部署应用到Azure Kubernetes上。但是部署是否成功?会不会遇到什么问题?项目运行中是否会出现问题?我们该怎么样查看这些问题,并且对问题进行针对性解决?这就是今天要讲的。

Aks_Core部署流程

在讲遇到的问题之前我们可以先看看如何在AKS环境上部署Net Core应用资源。

  1、  先决条件

Aks部署.Net Core项目需要条件:

1、本地安装docker环境(生成docker镜像,推送镜像到容器注册表)

2、本地安装Azure CLI(连接Azure 并执行相关命令)

2、  部署流程

a)      本地生成Docker镜像

i.          修改编辑Dockerfile文件(Linux环境和Windows环境生成镜像的文件内容不一样)

ii.          本地运行生成镜像命令

            docker build -t <镜像名> .

iii.          本地docker部署镜像测试运行

            docker run -d –name=<运行名> -p 5001:80 <镜像名>

b)      创建资源组

i.          切换环境:

            国际版-az cloud set -n AzureCloud。国内版-az cloud set -n AzureChinaCloud

ii.          通过cmd登录到Azure:

            az login (根据浏览器弹出的页面进行验证)

iii.          创建资源组(可以通过页面Azure创建,也可通过命令运行:)

            az group create --name < 资源组名称 > --location eastus

c)       在资源组中创建容器注册表并推送镜像

i.          创建容器注册表

            az acr create --resource-group <资源组名称> --name <acrName> --sku Basic

ii.          获取容器注册表登录服务器

            az acr list --resource-group <资源组名称> --query "[].{acrLoginServer:loginServer}" --output table

iii.          通过docker命令标记本地镜像

            docker tag 镜像名:版本 <acrLoginServer>/镜像名:版本

iv.          登录到容器注册表

            az acr login --name <acrName>

v.          推送镜像到容器注册表

            docker push <acrLoginServer>/<镜像名>:版本

vi.          检查镜像是否推送成功

            az acr repository list --name <acrName> --output table

d)      创建K8S群集并且连接

   i.      创建Kubernetes群集(通过azure页面创建或者通过命令创建:)

     az aks create \

        --resource-group <资源组名称> \

        --name <Kuberbetes群集名称> \

        --node-count 2 \

        --generate-ssh-keys \

        --attach-acr <acrName>

ii.          如果使用kubectl命令找不到的话就需要安装kubectl

           az aks install-cli

iii.          通过azure页面上的Kubernetes链接连接到Kubernetes

iv.          通过获取群集节点命令验证Kubernetes是否连接成功

          kubectl get nodes

e)      创建编辑yaml文件并部署

i.          创建更新yaml文件

ii.          使用kubectl命令创建Kubernetes对象

          kubectl appy -f  <yaml文件名>

iii.          使用kubectl命令监视查看service运行状况

          kubectl get service azure-vote-front --watch

安装Azure CLI

我们需要下载Azure CLI:安装适用于 Windows 的 Azure CLI | Microsoft Learn

然后依次安装就行了。安装成功在CMD窗口检验是否成功即可。

     

连接Kubernetes

1、 进入Microsoft Azure 管理页面,并选择创建的Kubernetes 服务。

2、 选择概述页面、点击点击连接会出现以下界面

     

3、 打开Windows CMD命令窗口输入az login,并且在弹出的登录页面进行登录验证(注意Azure 是国内版还是国外版的,需要对应切换环境)。

4、 输入第2步的两个连接命令,依次输入。

5、 输入kubectl get pods -n <命名空间名>来查询pod信息。

     

查看Pod描述和日志

上面我们讲了怎么连接到Azure Kubernetes服务并且查询Pods信息,下面我们看下怎么查看Pod更具体的信息来分析Pod状态。

在应用部署的时候,特别是在最开始的时候,特别容易碰到部署不成功的情况。例如Pod出现ErrImagePull或者ImagePullBackOff、或者出现CrashLoopBackOff等等,那么我们就需要查询Pod的描述或者日志等等来定位到错误信息。

1、 保持上面的kubernetes 连接,并且在CMD里面输入kubectl describe pod <pod名称>  -n <命名空间名称>查看描述

2、 Kubectl logs -f  <pod名称> -n <命名空间名称> 查看日志

例如我这里部署一个demo,镜像配置一个不存在的镜像。就会出现ImagePullBackOff的都问题,我们可以查看描述

     

    

例如对于CrashLoopBackOff的情况一般是启动后又失败了,这时候我们可能更需要查看log日志来定位信息了,一般问题是在程序启动时报错。例如数据库连接、redis连接、接入第三方连接报错等等

查看资源消耗情况

上面我们看了怎么查询定位应用部署中遇到的问题,现在我们来看看在应用运行中可能会遇到那些问题。在程序运行中可能会遇到部署的程序资源耗尽然后导致Pod假死或者重启的情况、也有可能怎么节点甚至是Kubernetes服务资源耗尽的情况。这次我们主要针对如何查询资源信息。

1、 查询node 资源情况。Kubectl top node

2、 查询Pod资源情况kubectl top pod -n <命名空间名称>

  在Kubernetes服务中心部署可以使用自带的负载均衡。第一种情况是节点池资源充足,但是对应Pod的资源消耗殆尽甚至超过了。这就是在配置Pod的yaml文件中的资源限制配置问题了。yaml文件中resources配置中的requests最低需求和limits最大限制。第二种就是node节点的资源直接消耗殆尽了。一般这时候就需要看看是否需要增加配置,同时也需要检查应用程序,再看看具体是CPU还是内存了,是否有代码造成了内存泄漏。优化长时间处理的代码。

进入Pod中查看文件

进入Pod的命令kubectl exec -ti <Pod名称>-n <> sh。跟进入docker镜像内部相似进入进去后输入ls命令发现其实就是打包之前的应用程序。

    

生命不息、战斗不止!

欢迎大家扫描下方二维码,和我一起共同学习进步!

  

Azure Kubernetes(AKS)部署及查看应用资源的更多相关文章

  1. 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型

    以下步骤演示如何使用 Azure 命令行接口 (CLI) 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 本文中的操作需要 Az ...

  2. 有关从经典部署模型迁移到 Azure Resource Manager 部署模型的常见问题

    此迁移计划是否影响 Azure 虚拟机上运行的任何现有服务或应用程序? 不可以. VM(经典)是公开上市的完全受支持的服务. 你可以继续使用这些资源来拓展你在 Azure 上的足迹. 如果我近期不打算 ...

  3. 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践

    本文是对 <.NET Tutorial - Deploy a microservice to Azure> 的翻译和实践.入门级踩坑实践,k8s 大佬请回避,以免耽误您宝贵的时间. 介绍 ...

  4. ASP.NET Core在Azure Kubernetes Service中的部署和管理

    目录 ASP.NET Core在Azure Kubernetes Service中的部署和管理 目标 准备工作 注册 Azure 账户 AKS文档 进入Azure门户(控制台) 安装 Azure Cl ...

  5. Azure Kubernetes Service 入门

    一,引言 上一节,我们使用Azure CLI 创建了Azure Resource Group 和 Azure Container Registry 资源,并且将本地的一个叫 “k8s.net.demo ...

  6. 用集装箱装ASP。带有Docker和Azure Kubernetes服务的NET Core应用程序

    介绍 曾经有一个单一软件应用程序的时代,整个应用程序被打包并部署在作为单个进程运行的单个服务器上.我们都知道,在这个模型中,单点故障可能会导致整个应用程序崩溃. 微服务体系结构的发展是为了解决单片应用 ...

  7. 使用ARM模板在Azure中国大规模部署DCOS集群

    容器技术是目前非常流行的技术,尤其是在以Docker作为容器引擎的推动下,让容器的轻量级,可移植,自包含,隔离性等的上了一个新的台阶,目前谈及Dev/Ops,CI/CD很少能够绕过Docker的. A ...

  8. 简化kubernetes应用部署工具之Helm应用部署

    介绍 微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的a ...

  9. [译]Kubernetes 分布式应用部署和人脸识别 app 实例

    原文地址:KUBERNETES DISTRIBUTED APPLICATION DEPLOYMENT WITH SAMPLE FACE RECOGNITION APP 原文作者:skarlso 译文出 ...

随机推荐

  1. Nginx Rewrite资源重定向

    # Rewrite功能配置 # Rewrite功能主要是实现了url重写 # 如:你输入www.jd123.com,你可以通过Rewrite让它重定向到www.jd.com # Rewrite的实现依 ...

  2. odoo14 入门解刨关联字段

    Odoo中关联字段是用来绑定表与表之间主从关系的. 主从关系指: 首先必须要明白id的存在的意义,它具备"唯一"的属性,也就是表中所有记录中该字段的值不会重复. 假设表A存储是身份 ...

  3. MAUI Blazor 权限经验分享 (定位,使用相机)

    入门文章 Blazor Hybrid / MAUI 简介和实战 https://www.cnblogs.com/densen2014/p/16240966.html 在 Mac 上开发 .NET MA ...

  4. DolphinScheduler 线上 Meetup 视频回放(07.25)

    上周六下午 DolphinScheduler 社区联合 Doris 社区进行了 2020 年首次线上 Meetup,各位讲师都做了非常精彩的分享,也吸引了 1900 多位技术伙伴观看. 其中 Dolp ...

  5. fast json 乱序问题解决过程

    解决问题:保存到redis中的jsonstring在转回jsonObject的时候乱序: 解决方案:https://inlhx.iteye.com/blog/2312512 解决过程: 1 看fast ...

  6. Express 项目,res.cookie() 设置 Cookie 无法被保存在浏览器的 Application 中

    res.cookie() 给客户端响应头封装的 Cookie 无法被保存在客户端浏览器的 Application 中,只能在 Set-Cookie 中看到有这个值: 在前后端分离项目中,存在跨域问题, ...

  7. 这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架

    作者:冰河 博客地址:https://binghe001.github.io 大家好,我是冰河~~ 没错,这次冰河又要搞事情了,这次准备下手的是RPC框架项目.为什么要对RPC框架项目下手呢,因为在如 ...

  8. MySQL源码分析之SQL函数执行

    1.MySQL中执行一条SQL的总体流程 2.SQL函数执行过程 1.MySQL中执行一条SQL的总体流程 一条包含函数的SQL语句,在mysql中会经过: 客户端发送,服务器连接,语法解析,语句执行 ...

  9. ubuntu安装BricsCAD

    目录 目录 下载软件包 安装deb软件包 sudo dpkg -i *.deb 将Crack/bricsys.lic中hostid= <YOURHOSTID>替代本机MAC地址(中间不要冒 ...

  10. C/C++内存泄漏检测方法

    1. 内存泄漏 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果. 2. 检测代码 使用链 ...