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

目标

部署:掌握将aspnetcore程序成功发布到Azure Kubernetes Service(AKS)上
管理:掌握将AKS上的aspnetcore程序扩容、更新版本

准备工作

注册 Azure 账户

官网
免费帐户

Azure 免费帐户仅适用于新用户,并且仅限每个客户一个免费帐户。

AKS文档

AKS文档首页
azure中文文档

Azure有两种管理方式 Azure Cli 和 Azure 门户。

进入Azure门户(控制台)

门户(控制台)

搜索AKS,选中Azure Kubernetes Service,进入AKS控制台。

安装 Azure Cli

安装文档

主要使用Cli方式管理Azure。

安装 Docker

Docker首页
DockerHub

进入正题

Azure 相关概念

资源组

创建资源组

az group create --name myResourceGroup --location eastasia

删除资源组

az group delete --name myResourceGroup --yes --no-wait

容器注册表 Azure Container Register (ACR)

使用 ACR 管理 Docker 镜像。

创建 ACR

az acr create --resource-group boot-camp-2019 --name azurebootcamp2019 --sku Basic

登录 ACR

az acr login --name azurebootcamp2019

服务主体 service principle

创建服务主体

az ad sp create-for-rbac --skip-assignment

记下返回信息 appId 和 password,返回格式如下

{
"appId": "d67dc2f9-d8d1-4a2c-a2ef-df15cc3710c1",
"displayName": "azure-cli-2019-04-21-11-46-32",
"name": "http://azure-cli-2019-04-21-11-46-32",
"password": "4488581b-d297-4488-ac4a-154400df8acd",
"tenant": "16cdead3-aec0-4dcb-acc4-d9c862f105d3"
}

给服务主体配置 ACR 的pull权限

查询 ACR 的 arcId

az acr show --resource-group boot-camp-2019 --name azurebootcamp2019 --query "id" --output tsv

给服务主体分配 AcrPull 角色

# az role assignment create --assignee <appId> --scope <acrId> --role acrpull
az role assignment create --assignee d67dc2f9-d8d1-4a2c-a2ef-df15cc3710c1 --scope /subscriptions/5c029b59-2c2e-4b8b-b76b-8afde2753164/resourceGroups/boot-camp-2019/providers/Microsoft.ContainerRegistry/registries/azurebootcamp2019 --role acrpull

K8s服务集群 Azure Kubernetes Service(AKS)

创建AKS集群

# az aks create \
# --resource-group boot-camp-2019 \
# --name k8s-bootcamp2019 \
# --node-count 1 \
# --enable-addons monitoring \
# --service-principal <appId> \
# --client-secret <password> \
# --generate-ssh-keys


az aks create \
--resource-group boot-camp-2019 \
--name k8s-bootcamp2019 \
--node-count 1 \
--enable-addons monitoring \
--service-principal d67dc2f9-d8d1-4a2c-a2ef-df15cc3710c1 \
--client-secret 4488581b-d297-4488-ac4a-154400df8acd \
--generate-ssh-keys

连接AKS集群

使用 kubectl 连接AKS集群,如果没有安装 kubectl ,使用如下指令安装。

az aks install-cli

将 kubectl 配置为连接到 Kubernetes 群集,如下命令将会创建集群配置以及 Kubernetes Context

az aks get-credentials --resource-group boot-camp-2019 --name k8s-bootcamp2019

验证到群集的连接

kubectl get nodes

删除Context

kubectl config delete-cluster k8s-bootcamp2019
kubectl config delete-context k8s-bootcamp2019

kubectl文档

打包 Docker 镜像

可以直接使用Docker Hub中的镜像。也可以将镜像上传到ACR(推荐)。
docker 入门
dotnetcore docker 示例
Docker Hub 国内镜像

ASP.NET Core Sample

git clone https://github.com/dotnet/dotnet-docker
cd dotnet-docker/samples/aspnetapp/
docker build -t aspnetapp .
docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp

标记容器映像

查询acrLoginServer,需先登录ACR

az acr list --resource-group boot-camp-2019 --query "[].{acrLoginServer:loginServer}" --output table

标记镜像

# docker tag aspnetapp <acrLoginServer>/bootcamp2019web:v1
docker tag aspnetapp azurebootcamp2019.azurecr.io/bootcamp2019web:v1
docker images

推送 Docker Image 到 ACR

# docker push <acrLoginServer>/bootcamp2019web:v1
docker push azurebootcamp2019.azurecr.io/bootcamp2019web:v1

查询 ACR 实例的映像列表

az acr repository list --name azurebootcamp2019 --output table

发布

deployment配置文件

apiVersion: apps/v1
kind: Deployment
metadata:
name: boot-camp-2019-web
spec:
replicas: 1
selector:
matchLabels:
app: boot-camp-2019-web
template:
metadata:
labels:
app: boot-camp-2019-web
spec:
containers:
- name: boot-camp-2019-web
image: azurebootcamp2019.azurecr.io/bootcamp2019web:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: boot-camp-2019-web
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: boot-camp-2019-web

发布

# kubectl apply -f <配置.yaml>
kubectl apply -f ~/boot-camp-2019-web.yaml
kubectl get service boot-camp-2019-web --watch

扩容

kubectl get pods
kubectl scale --replicas=3 deployment/boot-camp-2019-web

kubectl get pods

更新

kubectl set image deployment boot-camp-2019-web boot-camp-2019-web=azurebootcamp2019.azurecr.io/bootcamp2019web:v2

dashboard

az aks browse --resource-group boot-camp-2019 --name k8s-bootcamp2019

权限问题

kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard

原文地址:https://www.cnblogs.com/binking338/p/aspnetcore_on_k8s.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入研究 Mini ASP.NET Core,看看 ASP.NET Core 内部到底是如何运行的

几年前&#xff0c;Artech 老师写过一个 Mini MVC&#xff0c;用简单的代码告诉读者 ASP.NET MVC 内部到底是如何运行的。当时我研究完以后&#xff0c;受益匪浅&#xff0c;内心充满了对 Artech 老师的感激&#xff0c;然后用我自己理解的 MVC 知识&#xff0c;写了一篇 深入研…

一文读懂Asp.net core 依赖注入(Dependency injection)

一、什么是依赖注入首先在Asp.net core中是支持依赖注入软件设计模式&#xff0c;或者说依赖注入是asp.net core的核心&#xff1b;依赖注入&#xff08;DI&#xff09;和控制反转&#xff08;IOC&#xff09;基本是一个意思&#xff0c;因为说起来谁都离不开谁&#xff1b;或者…

P4619 [SDOI2018]旧试题

P4619 [SDOI2018]旧试题 题意&#xff1a; 求个式子&#xff1a; (∑i1A∑j1B∑k1Cd(i∗j∗k))mod(1097)(\sum_{i1}^{A}\sum_{j1}^{B}\sum_{k1}^{C}d(i*j*k))mod(10^97)(i1∑A​j1∑B​k1∑C​d(i∗j∗k))mod(1097) 题解&#xff1a; 原创博文1k纪念 很明显&#xff0c;莫比…

C#中使用Bogus创建模拟数据

原文&#xff1a;CREATING SAMPLE DATA FOR C#[1] 作者&#xff1a;Bruno Sonnino 译文&#xff1a;C#中使用Bogus创建模拟数据 译者&#xff1a; Lamond Lu背景在我每次写技术类博文的时候&#xff0c;经常做的一件事就是创建模拟数据。在每篇博文中&#xff0c;为了解释某些概…

CF1253E Antenna Coverage

CF1253E Antenna Coverage 题意&#xff1a; 现在有n个点&#xff0c;每个点的坐标为xi&#xff0c;以及一个范围值si&#xff0c;可以覆盖左右范围[xi-si,xisi] 每次操作&#xff0c;可以花费代价1让第i个天线的si增加1&#xff0c;每个天线都可以进行多次操作。现在请问你最…

使用BeetleX的TcpBenchmark工具进行百万设备模拟测试

其实TCP测试的工具有很多&#xff0c;那BeetleX工具所提供的特点又是什么呢&#xff1f;如果你需数十万的请求或模拟上百万的设备连接&#xff0c;那这个工具相信可以满足你的需要&#xff01;工具是基于BeetleX的基础功能扩展&#xff0c;支持多IP绑定可以轻松实现上百万的cli…

.net core Entity Framework 与 EF Core

重点讲 Entity Framework Core &#xff01;&#xff08;一&#xff09;Entity Framework它是适用于.NET 的对象关系映射程序 (ORM)&#xff0c;现在的EF6已经是久经沙场&#xff0c;并经历重重磨难&#xff0c;获得一致认可的数据访问技术&#xff08;原来加 Title 也挺有意思…

CF1253F Cheap Robot

CF1253F Cheap Robot 题意&#xff1a; 给你一张 N 个点的带权无向连通图&#xff0c;其中结点 1,2,…,k 为充电中心。 一个机器人在图中行走&#xff0c;假设机器人的电池容量为 c&#xff0c;则任何时刻&#xff0c;机器人的电量 x 都必须满足 c0≤x≤c。如果机器人沿着一…

asp.net core 3.0 gRPC框架小试

什么是gRPCgRPC是google开源的一个高性能、跨语言的RPC框架&#xff0c;基于HTTP2协议&#xff0c;采用ProtoBuf 定义的IDL。gRPC 的主要优点是&#xff1a;现代高性能轻量级 RPC 框架。协定优先 API 开发&#xff0c;默认使用协议缓冲区&#xff0c;允许与语言无关的实现。可用…

P1131 [ZJOI2007] 时态同步

P1131 [ZJOI2007] 时态同步 题意&#xff1a; 有一颗树&#xff0c;有一个点是激发器&#xff0c;从这个点开始可以产生一个激励电流&#xff0c;通过导线传向每一个它所连接的节点&#xff0c;经过一个边的花费为w[i],你有一个道具&#xff0c;每用一次可以让一个边的花费1&…

.Net开发者必知的技术类RSS订阅指南

作为一个.Net开发者&#xff0c;在如今这个信息大爆炸时代&#xff0c;网络上.net开发方面的信息浩如烟海(获取信息的渠道很多&#xff0c;比如各种 APP、公众号、聚合信息网站、博客园、InfoQ等等)&#xff0c;如何用有限的时间来获取并消化有效信息显得格外重要。虽然我们获取…

又一最大子段和

又一最大子段和&#xff08;牛客小白月赛38 &#xff09; 题意&#xff1a; 我们将一个数列{an}的最大字段和的值记为S(a),现在你可以对进行若干次操作&#xff0c;每次操作&#xff0c;你可以选择数列中的一个数字&#xff0c;将其改为[−10100,10100][-10^{100},10^{100}][…

我的微服务观,surging 2.0将会带来多大的改变

Surging 自2017年6月16日开源以来&#xff0c;已收到不少公司的关注或者使用&#xff0c;其中既有以海克斯康超大型等外企的关注&#xff0c;也不乏深圳泓达康、重庆金翅膀等传统行业的正式使用&#xff0c;自2019年年初&#xff0c;surging2.0 便已正式进入研发阶段&#xff0…

corefx 源码学习:SqlClient 是如何同步建立 Socket 连接的

在昨天的技术周会上发现 EnyimMemcached 中建立 Socket 连接的代码有问题&#xff0c;今天坐车的时候在手机上阅读 .net core 2.2 的 SqlClient 中同步建立 Socket 连接的代码 SNITcpHandle.cs#L180 学习了一下。建立 Socket 连接需要处理2个问题&#xff1a;1&#xff09;处理…

NetCore + SignalR 实现日志消息推送

哈喽大家周一好呀&#xff0c;感觉好久没有写文章了&#xff0c;上周出差了一次&#xff0c;感觉还是比坐办公室好的多&#xff0c;平时在读一本书《时生》&#xff0c;感兴趣的可以看看?......这几天翻看 NetCore 相关知识扩展的时候&#xff0c;发现了久违的一个知识点 ——…

使用Entity Framework Core访问数据库(DB2篇)

上一篇讲了一些EF Core访问Oracle的坑。&#xff08;感兴趣请移步&#xff1a;使用Entity Framework Core访问数据库&#xff08;Oracle篇&#xff09;&#xff09;这篇主要讲一下关于EF Core访问DB2的一揽子~问题。本篇采用DBFirst直接生成实体。关于EF Core DB2 的官方文档&a…

Linux中以单容器部署Nginx+ASP.NET Core

正如前文提到的&#xff0c;强烈推荐在生产环境中使用反向代理服务器转发请求到Kestrel Http服务器&#xff0c;本文将会实践将Nginx --->ASP.NET Core 部署架构容器化的过程。Nginx->ASP.NET Coe部署架构容器化在Docker中部署Nginx--->ASP.NETCore 有两种选择&#x…

领域驱动设计学习之路—DDD的原则与实践

本文是我学习Scott Millett & Nick Tune编著的《领域驱动设计模式、原理与实践》一书的学习笔记&#xff0c;一共会分为4个部分如下&#xff0c;此文为第1部分&#xff1a;领域驱动设计的原则与实践战略模式&#xff1a;在有界上下文之间通信战术模式&#xff1a;创建有效的…

.NET Core中使用Dapper操作Oracle存储过程最佳实践

为什么说是最佳实践呢&#xff1f;因为在实际开发中踩坑了&#xff0c;而且发现网上大多数文章给出的解决方法都不能很好地解决问题。尤其是在获取类型为OracleDbType.RefCursor&#xff0c;输出为&#xff1a;ParameterDirection.Output数据的时候。网上千篇一律的说写一个Ora…

CanalSharp.AspNetCore v0.0.4-支持输出到MongoDB

一、多样输出支持CanalSharp.AspNetCore是一个基于CanalSharp的适用于ASP.NET Core的一个后台任务组件&#xff0c;它可以随着ASP.NET Core实例的启动而启动&#xff0c;目前采用轮询的方式对Canal Server进行监听&#xff0c;获得MySql行更改&#xff08;RowChange&#xff09…