Azure Kubernetes(AKS)部署及查看应用资源
简介
上一篇文章讲解了如何使用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)部署及查看应用资源的更多相关文章
- 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型
以下步骤演示如何使用 Azure 命令行接口 (CLI) 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 本文中的操作需要 Az ...
- 有关从经典部署模型迁移到 Azure Resource Manager 部署模型的常见问题
此迁移计划是否影响 Azure 虚拟机上运行的任何现有服务或应用程序? 不可以. VM(经典)是公开上市的完全受支持的服务. 你可以继续使用这些资源来拓展你在 Azure 上的足迹. 如果我近期不打算 ...
- 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践
本文是对 <.NET Tutorial - Deploy a microservice to Azure> 的翻译和实践.入门级踩坑实践,k8s 大佬请回避,以免耽误您宝贵的时间. 介绍 ...
- ASP.NET Core在Azure Kubernetes Service中的部署和管理
目录 ASP.NET Core在Azure Kubernetes Service中的部署和管理 目标 准备工作 注册 Azure 账户 AKS文档 进入Azure门户(控制台) 安装 Azure Cl ...
- Azure Kubernetes Service 入门
一,引言 上一节,我们使用Azure CLI 创建了Azure Resource Group 和 Azure Container Registry 资源,并且将本地的一个叫 “k8s.net.demo ...
- 用集装箱装ASP。带有Docker和Azure Kubernetes服务的NET Core应用程序
介绍 曾经有一个单一软件应用程序的时代,整个应用程序被打包并部署在作为单个进程运行的单个服务器上.我们都知道,在这个模型中,单点故障可能会导致整个应用程序崩溃. 微服务体系结构的发展是为了解决单片应用 ...
- 使用ARM模板在Azure中国大规模部署DCOS集群
容器技术是目前非常流行的技术,尤其是在以Docker作为容器引擎的推动下,让容器的轻量级,可移植,自包含,隔离性等的上了一个新的台阶,目前谈及Dev/Ops,CI/CD很少能够绕过Docker的. A ...
- 简化kubernetes应用部署工具之Helm应用部署
介绍 微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的a ...
- [译]Kubernetes 分布式应用部署和人脸识别 app 实例
原文地址:KUBERNETES DISTRIBUTED APPLICATION DEPLOYMENT WITH SAMPLE FACE RECOGNITION APP 原文作者:skarlso 译文出 ...
随机推荐
- SQL及常见的三种类型注释
SQL(Structure Query Language)语言是数据库的核心语言. SQL的发展是从1974年开始的,其发展过程如下:1974年-----由Boyce和Chamberlin提出,当时称 ...
- AOP实现切入
6.AOP实现切入 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术 AOP是OOP的延续,也 ...
- Redis 10 位图
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Redi ...
- vue项目打包后使用reverse-sourcemap反编译到源码(详解版)
首先得说一下,vue项目中productionSourceMap这个属性.该属性对应的值为true|false. 当productionSourceMap: true,时: 1.打包后能看到xxx ...
- 大数据Hadoop入门教程 | (二)Linux
使用finalShell可以提供文件目录图形化 完整Linux命令整理参考大佬博客:Linux常见文件管理命令 - Mr_Walker - 博客园 Linux文件系统基础知识 Linux文件系统概念 ...
- 老梗新玩「GitHub 热点速览 v.22.34」
作者:HelloGitHub-小鱼干 不知道你是否和我有一样的烦恼,最近的流行梗当自己要用拿来造词时,就陷入了不知道咋"换壳"的尴尬地步.sao-gen-gen 大大减少了你老梗新 ...
- R数据分析:用R建立预测模型
预测模型在各个领域都越来越火,今天的分享和之前的临床预测模型背景上有些不同,但方法思路上都是一样的,多了解各个领域的方法应用,视野才不会被局限. 今天试图再用一个实例给到大家一个统一的预测模型的做法框 ...
- SFSafariViewController 加载的网页与原生oc之间的交互
问题描述: 工作中碰到这样一种场景, WebApp 已经实现了IM即时通讯及基于WebRTC实现的音视频会议,音视频聊天. 也是半路接手的项目,项目整体是使用WKWebView套壳加载h5 页面实现( ...
- Linux有趣命令
通外网 下载使用阿里云镜像源:wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.re ...
- Python 第三次实验
一如既往地简单,不到半个小时即可完成 [1] (程序设计)输入一个正整数,输出它的因子分解式.如输入132,则输出132=122311 n=int(input()) print(1,end='') f ...