简介

上一篇文章讲解了如何使用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. 二位数组——扩展:冒泡排序、Arrays类

    1.冒泡排序 速记口诀(升序)   n个数字来排队:两两相比小靠前:外层循环n-1:内层循环n-i-1. 示例:定义一个数组,用冒泡排序将数组进行升序排序 关键代码: 输出结果: 2.Arrays 类 ...

  2. PhpStorm 中文设置教程

    本文仅供学习交流使用,如侵立删!demo下载见文末 Pycharm中文设置教程 1.首先打开PhpStorm ,点击file-settings.找到plugins,搜索Marketplace,然后搜索 ...

  3. 深入理解Spring注解机制(一):注解的搜索与处理机制

    前言 众所周知,spring 从 2.5 版本以后开始支持使用注解代替繁琐的 xml 配置,到了 springboot 更是全面拥抱了注解式配置.平时在使用的时候,点开一些常见的等注解,会发现往往在一 ...

  4. 使用VitePress搭建及部署vue组件库文档

    每个组件库都有它们自己的文档.所以当我们开发完成我们自己的组件库必须也需要一个组件库文档.如果你还不了解如何搭建自己的组件库可以看这里->从零搭建Vue3组件库.看完这篇文章你就会发现原来搭建和 ...

  5. Excel 统计函数(二):COUNTIF 和 COUNTIFS

    COUNTIF [语法]COUNTIF(range, criteria) [作用]range 为统计的范围,criteria 是统计的条件. [题目]统计 A1 到 A10 范围内,出现"你 ...

  6. Windows批量修改文件

    如图我是建立了壁纸文件夹 Windows自带的排序方式 如何不用自带的呢? 在这个文件夹里面建一个.txt文件 如下 ok第二步骤 将UTF-8格式改为ANSI格式 点击文件-另存为ANSI格式-替换 ...

  7. tomcat 10无法使用jstl 如何添加依赖

    以Tomcat 10.0.23   idea 2021.1版本为例需要添加依赖 <dependency> <groupId>org.glassfish.web</grou ...

  8. c# 异步进阶————channel [一]

    前言 该系列为异步编程的进阶篇,其实也不能这么讲.世界上本没有进阶篇,只能说是高级篇(高级篇不能说多高级,是对底层的封装的意思),只要是加深理解都是进阶. 本章先介绍一下channel. 正文 下面没 ...

  9. KingbaseES blob 类型数据导入导出

    KingbaseES兼容了oracle的blob数据类型.通常是用来保存二进制形式的大数据,也可以用来保存其他类型的数据. 下面来验证一下各种数据存储在数据库中形式. 建表 create table ...

  10. 这里聊聊扫地机的 IOT 开发

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16663833.html 消费者使用扫地机通常的方式是通过 ...