加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:32:27 所属栏目:asp.Net 来源:网络整理
导读:目录 ASP.NET Core在Azure Kubernetes Service中的部署和管理 目标 准备工作 注册 Azure 账户 AKS文档 进入Azure门户(控制台) 安装 Azure Cli 安装 Docker 进入正题 资源组 创建资源组 删除资源组 容器注册表 Azure Container Register (ACR) 创建 ACR 登

目录

  • ASP.NET Core在Azure Kubernetes Service中的部署和管理
    • 目标
    • 准备工作
      • 注册 Azure 账户
      • AKS文档
      • 进入Azure门户(控制台)
      • 安装 Azure Cli
      • 安装 Docker
      • 进入正题
    • 资源组
      • 创建资源组
      • 删除资源组
    • 容器注册表 Azure Container Register (ACR)
      • 创建 ACR
      • 登录 ACR
    • 服务主体 service principle
      • 创建服务主体
      • 给服务主体配置 ACR 的pull权限
    • K8s服务集群 Azure Kubernetes Service(AKS)
      • 创建AKS集群
      • 连接AKS集群
    • 打包 Docker 镜像
      • ASP.NET Core Sample
      • 标记容器映像
      • 推送 Docker Image 到 ACR
    • 发布
      • deployment配置文件
      • 发布
    • 扩容
    • 更新
    • dashboard

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读