资讯详情

如何实现AKS群集部署及挂载共享存储

如何实现AKS(Azure Kubernetes Service)

集群部署、挂载共享存储

目录

Azure Kubernetes Service 服务 1

集群的部署运行和监控 1

背景需求 3

解决方案 3

产品介绍&基本概念 3

介绍以下内容(基本概念) 3

方案验证 4

1.创建 AKS 群集 4

2.安装Azure CLI 并成功连接Azure 6

3.连接到群集 9

4.操作应用程序 10

5.测试应用程序 12

6.监控运行状态和日志 13

收益 15

实战应用 15

部署应用和吊载共享存储 15

背景需求

迁移现有的应用程序

概述

将现有应用程序轻松迁移到容器中 Azure 托管 Kubernetes 服务 (AKS) 中运行。

1 用户可以将现有的应用程序转换为容器,也可以向容器图像发布 Azure 容器注册表

2 借助 Azure 用户可以在门户或命令行中部署容器 AKS 群集

解决方案

  • 使用 Azure 部署并连接门户 AKS 群集。

  • 集中运行一个包含 Web 前端和 Redis 实例多容器应用程序。

  • 监控运行应用程序的集群和 Pod 运行状态。

**Kubernetes 集群体系结构:**Kubernetes 组分为两个组件:

  • 控制平面:提供 Kubernetes 业务流程负载的核心服务和应用程序。

  • 节点:操作应用程序的工作负荷。

在这里插入图片描述

产品介绍&基本概念

Azure Kubernetes 服务 (AKS) 是一种托管 Kubernetes 产品/服务可以进一步简化基于容器的应用程序的部署和管理,降低部署和核心管理任务(如升级协调)的复杂性。作为托管 Kubernetes 服务,Azure 可自动处理运行状护等关键任务可自动处理。-

Azure Kubernetes Service(AKS)是Azure开源容器和平台服务。Kubernetes是当前火热的容器市场关注的热点,AKS是Azure集装箱生态核心产品服务。

介绍以下内容(基本概念)

核心 Kubernetes 基础结构组件:

控制平面

节点

节点池

工作负荷资源:

Pod

部署

控制面板

创建 AKS 系统将自动创建和配置控制平面。

节点

需要运行应用程序和支持服务 Kubernetes 节点。 一个 AKS 集群至少有一个节点,即运行 Kubernetes 当节点组件和容器运行时 Azure 虚拟机 (VM)。

节点池

配置相同的节点将统一合并成节点池。 一个 Kubernetes 至少有一个节点池。 创建 AKS 将初始节点的数量和大小定义为一个默认节点池。 AKS 默认节点池包含代理节点运行的基础 VM。

Pod

Kubernetes 使用 Pod 运行应用程序的实例。 Pod 单个实例表示应用程序。

Pod 通常与容器一对一映射。 在高级方案中,一个 Pod 可包含多个容器。 多容器 Pod 它是在同一节点共同计划的,容器可以通过它们共享相关资源。

部署和 YAML 清单

部署表示由 Kubernetes 相同的部署控制器管理 Pod。 要创建的部署定义 Pod 副本数量。 Kubernetes 确保计划程序正确 Pod 当节点出现问题时,在正常节点上计划其他问题 Pod。

方案验证

在 https://portal.azure.cn 中登录 Azure 门户,

1.创建 AKS 群集

在搜索框 键入 “Kubernetes 点击服务Kubernetes 服务,选择创造

在基本信息页面上,配置以下选项:

选择一个 Azure 订阅。

选择或创建一个 Azure ,例如 SinoK8S-RG

输入 ,例如 SinoK8SCluster

选择 AKS 集群的区域是中国北部2和Kubernetes 默认版本 。

为 AKS 节点选择 VM 节点大小。 一旦部署 AKS 集群,不能改变 VM 大小。

选择要部署到群集中的节点数。请将节点计数设置为1。 节点计数可在部署组集后进行调整。

选择下一步:节点池。保留默认的节点池选项。 单击屏幕底部的下一步:身份验证。

在身份验证页面上,配置以下选项:

系统分配的托管标志保留在身份验证字段中。

启用 Kubernetes 基于角色访问控制 (Kubernetes RBAC) 选项(以便更精细地控制部署 AKS 群集中的 Kubernetes 资源的访问权限)。

默认情况下,将使用基本网络,并将适用于容器 Azure Monitor。/p>

其余设置保留默认,验证完成后,依次单击“查看 + 创建”、“创建”。

创建 AKS 群集需要几分钟时间。

部署完成后,单击“转到资源”找到创建好的SinoK8SCluster:

下面显示了示例群集仪表板:

2.安装Azure CLI 并成功连接到Azure

sudo rpm --import <https://packages.microsoft.com/keys/microsoft.asc>

	sudo sh -c 'echo -e "[azure-cli]
	
	name=Azure CLI
	
	baseurl=https://packages.microsoft.com/yumrepos/azure-cli
	
	enabled=1
	
	gpgcheck=1
	
	gpgkey=https://packages.microsoft.com/keys/microsoft.asc" \>
	/etc/yum.repos.d/azure-cli.repo'

**sudo yum install azure-cli \#\#\#\#\#**使用 yum install 命令安装。

先运行 az cloud set -n AzureChinaCloud 更改云环境

登录,使用 az login 命令

如果 CLI 可以打开默认浏览器,它将这样做并加载 Azure 登录页。

否则,请在 https://aka.ms/devicelogin 处打开浏览器页,然后输入终端中显示的授权代码。如图:授权代码为FMP3QTUKZ。

输入完成后会出现你的中国区Azure账号,选中该账号后会如下图所示:

点击继续,成功连接到 Azure,见图:

3.连接到群集

使用 az aks get-credentials 命令将 kubectl 配置为连接到你的 Kubernetes 群集。 以下命令将下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。

**az aks get-credentials --admin --name SinoK8SCluster --resource-group  SinoK8S-RG**

使用 kubectl get 命令返回群集节点的列表,以此验证与群集之间的连接。

**kubectl get nodes**

输出显示在上一步骤中创建的单个节点。 确保节点状态为 Ready ,然后可以进行运行应用程序步骤*~*

**yum install -y etcd kubernetts ntp flannel  \#\#\#\#\#\#**

**vim /etc/yum.repos.d/CentOS-Base.repo
\#\#\#\#\#\#**在/etc/yum.repos.d/目录下添加Kubernetes的yum源,在最后加入下面的信息,保存退出

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=0

**yum list kubectl –showduplicates

#####**查看可安装的版本,每个人的有所不同,我本机的输出信息如下

**yum -y install kubectl.x86_64 \#\#\#\#\#\#**安装提示信息中可安装的软件包

**最后再执行kubectl get nodes。**

4.运行应用程序

在本地 Shell 中,使用编辑器创建一个名为 azure-vote.yaml 的文件

复制以下 YAML 定义:

apiVersion: apps/v1

kind: Deployment

metadata:

name: azure-vote-back

spec:

replicas: 1

selector:

matchLabels:

app: azure-vote-back

template:

metadata:

labels:

app: azure-vote-back

spec:

nodeSelector:

"beta.kubernetes.io/os": linux

containers:

\- name: azure-vote-back

image: mcr.microsoft.com/oss/bitnami/redis:6.0.8

env:

\- name: ALLOW_EMPTY_PASSWORD

value: "yes"

resources:

requests:

cpu: 100m

memory: 128Mi

limits:

cpu: 250m

memory: 256Mi

ports:

\- containerPort: 6379

name: redis

\---

apiVersion: v1

kind: Service

metadata:

name: azure-vote-back

spec:

ports:

\- port: 6379

selector:

app: azure-vote-back

\---

apiVersion: apps/v1

kind: Deployment

metadata:

name: azure-vote-front

spec:

replicas: 1

selector:

matchLabels:

app: azure-vote-front

template:

metadata:

labels:

app: azure-vote-front

spec:

nodeSelector:

"beta.kubernetes.io/os": linux

containers:

\- name: azure-vote-front

image: mcr.microsoft.com/azuredocs/azure-vote-front:v1

resources:

requests:

cpu: 100m

memory: 128Mi

limits:

cpu: 250m

memory: 256Mi

ports:

\- containerPort: 80

env:

\- name: REDIS

value: "azure-vote-back"

\---

apiVersion: v1

kind: Service

metadata:

name: azure-vote-front

spec:

type: LoadBalancer

ports:

\- port: 80

selector:

app: azure-vote-front

使用 kubectl apply 命令部署应用程序,并指定 YAML 清单的名称:

输出显示已成功创建的部署和服务:

5.测试应用程序

应用程序运行时,Kubernetes 服务将向 Internet 公开应用程序前端。 此过程可能需要几分钟才能完成。

若要监视进度,运行如下命令:

kubectl get service azure-vote-front –watch

azure-vote-front 服务的 输出最初显示为 pending。在 地址从 pending 更改为实际公共 IP 地址后,请使用 CTRL-C 来停止 kubectl 监视进程。 以下输出显示向服务分配了有效的公共 IP 地址:

若要查看 Azure Vote 应用的实际效果,打开 Web 浏览器并输入服务的外部 IP 地址

6.监视运行状况和日志

【说明】创建群集后,适用于容器的 Azure Monitor 便已启用。 用于容器的 Azure Monitor 提供 AKS 群集以及该群集上运行的 Pod 的运行状况指标。

指标数据需在几分钟后才会填充到 Azure 门户中。 若要查看 Azure Vote Pod 的当前运行状况、运行时间和资源使用情况:

浏览回到 Azure 门户中的 AKS 资源。在左侧的“监视”下,选择“见解”。

在顶部选择“+ 添加筛选器”。选择“命名空间”作为属性,然后选择 <All but kube-system> 。选择“容器”以查看容器。

将显示 azure-vote-back 和 azure-vote-front 容器,如以下示例中所示:

若要查看 azure-vote-front Pod 的日志,请从容器下拉列表中选择“查看容器日志”。 这些日志包括容器中的 stdoutstderr 流。

收益

使用容器服务的解决了成本和效率问题。IT资产的巨额浪费问题得到解决。

实战应用

部署应用及挂载共享存储

添加资源组

az group create --name yz-TechnologyCarnival --location chinanorth2

创建容器注册表

az acr login --name sinoage

登录容器注册表

推送镜像

docker push sinoage.azurecr.cn/nginx docker push sinoage.azurecr.cn/mysql

查看容器注册表中的镜像

az acr repository list --name sinoage --output table <span style=“color: #171717”>创建服务主体</span> az ad sp create-for-rbac --skip-assignment root@docker:/yaml# az ad sp create-for-rbac --skip-assignment { “appId”: “15ff0340-ebbc-406c-ada3-2b0af6fe80be”, “displayName”: “azure-cli-2019-10-08-07-37-49”, “name”: “http://azure-cli-2019-10-08-07-37-49”, “password”: “134e9239-043f-4919-82d2-ca780231b0b8”, “tenant”: “113aef27-55c0-4536-9576-bd8c6a7846d3” }

查看ACRID

az acr show --resource-group yz-TechnologyCarnival --name sinoage --query “id” –output tsv

配置 ACR 身份验证

az role assignment create --assignee 15ff0340-ebbc-406c-ada3-2b0af6fe80be –scope /subscriptions/6b3fe200-d158-4f43-a320-ccb6bb97af0f/resourceGroups/yz-TechnologyCarnival/providers/Microsoft.ContainerRegistry/registries/sinoage –role acrpull

创建 Kubernetes 群集

root@docker:/yaml# az aks create \ > --resource-group yz-TechnologyCarnival \ > --name sinoageAKSCluster \ > --node-count 1 \ > --service-principal 15ff0340-ebbc-406c-ada3-2b0af6fe80be \ > --client-secret 134e9239-043f-4919-82d2-ca780231b0b8 \ > --generate-ssh-keys { “aadProfile”: null, “addonProfiles”: null, “agentPoolProfiles”: [ { “availabilityZones”: null, “count”: 1, “enableAutoScaling”: null, “enableNodePublicIp”: false, “maxCount”: null, “maxPods”: 110, “minCount”: null, “name”: “nodepool1”, “nodeTaints”: null, “orchestratorVersion”: “1.13.10”, “osDiskSizeGb”: 100, “osType”: “Linux”, “provisioningState”: “Succeeded”, “scaleSetEvictionPolicy”: null, “scaleSetPriority”: null, “type”: “AvailabilitySet”, “vmSize”: “Standard_DS2_v2”, “vnetSubnetId”: null } ], “apiServerAccessProfile”: null, “dnsPrefix”: “sinoageAKS-yz-TechnologyCar-6b3fe2”, “enablePodSecurityPolicy”: null, “enableRbac”: true, “fqdn”: “sinoageaks-yz-technologycar-6b3fe2-ca3a87ea.hcp.chinanorth2.cx.prod.service.azk8s.cn”, “id”: “/subscriptions/6b3fe200-d158-4f43-a320-ccb6bb97af0f/resourcegroups/yz-TechnologyCarnival/providers/Microsoft.ContainerService/managedClusters/sinoageAKSCluster”, “identity”: null, “kubernetesVersion”: “1.13.10”, “linuxProfile”: { “adminUsername”: “azureuser”, “ssh”: { “publicKeys”: [ { “keyData”: “ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfv7ywVcCC4OT6e08zXN9//0PVBSFsl+QZuFjY7zTbEPvYpn4ZvVVAjLNbtN00rDsuYT4/mWW9ly69fa/7KAWrkuGhXs0N2IDDUXdio+2LOpLJv86cFHRcG31SB3YZH8AUWlbxahRrHyHXIQEYX/bPUalfZRMnjrFT0bzDFWGosWLYvblVpWnlgCJPBZTx3oGOX7euhAO1JDMHTrmK5fQrXHJSKwgzgZR0MiDB5SMinlJtxYmT/JVHYnPGwTGfJHBtjMIR2U/wvFhU+m4fDV00mrcVjuw1cgpmNuKXsOiVxSrh+UNfjOieqv86M39laxDPRxANwl+lxfrpKRVRith5” } ] } }, “location”: “chinanorth2”, “maxAgentPools”: 1, “name”: “sinoageAKSCluster”, “networkProfile”: { “dnsServiceIp”: “10.0.0.10”, “dockerBridgeCidr”: “172.17.0.1/16”, “loadBalancerProfile”: null, “loadBalancerSku”: “Basic”, “networkPlugin”: “kubenet”, “networkPolicy”: null, “podCidr”: “10.244.0.0/16”, “serviceCidr”: “10.0.0.0/16” }, “nodeResourceGroup”: “MC_yz-TechnologyCarnival_sinoageAKSCluster_chinanorth2”, “provisioningState”: “Succeeded”, “resourceGroup”: “yz-TechnologyCarnival”, “servicePrincipalProfile”: { “clientId”: “15ff0340-ebbc-406c-ada3-2b0af6fe80be”, “secret”: null }, “tags”: null, “type”: “Microsoft.ContainerService/ManagedClusters”, “windowsProfile”: null } <span style=“color: #171717”>连接到 Kubernetes 群集</span> <span style=“color: #171717”>若要验证与群集之间的连接,请运行 </span>kubectl get nodes<span style=“color: #171717”> 命令:</span>

部署应用程序

发布程序

查看pod日志

kubectl describe pods mysql-6479cbbfdc-pgmnn

创建存储账户并创建共享文件夹aksshare

使用存储账户用户名和访问key创建 Kubernetes 机密

kubectl create secret generic azure-secret –from-literal=azurestorageaccountname=technologycarnival –from-literal=azurestorageaccountkey=Ad4qRXvlINiNqOiyuEH0G1AnIT+3w8qvUuQToD4gjGY95XkitDlGffXmaHGpInSUlylsc1U6SXvYoDJJDibk+w== <span style=“color: #171717”>使用 kubectl describe pod PodName 验证共享是否已成功装载</span> Containers: mysql: Container ID: docker://c4d5d4f2b0a1a5f27441d745ae2ca64c8eb73e5e6d690a330262f2b99f2b5d0f Image: sinoage.azurecr.cn/mysql:v1 Image ID: docker-pullable://sinoage.azurecr.cn/mysql@sha256:2bd4665d9c5ecad61f7ceff82f82e6470c4686b9ec0fd986b84012861506c722 Port: 3306/TCP Host Port: 0/TCP State: Running Started: Tue, 08 Oct 2019 16:37:12 +0800 Ready: True Restart Count: 0 Environment: MYSQL_ROOT_PASSWORD: zabbix Mounts: /mnt/azure from azure (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-t9nvm (ro) <span style=“color: #171717”><ac:structured-macro ac:name=“unmigrated-wiki-markup” ac:schema-version=“1” ac:macro-id=“d9674f6e-c679-44cd-ad50-1874cd3e8e42”><ac:plain-text-body><![CDATA[[…] Volumes: azure: Type: AzureFile (an Azure File Service mount on the host and bind mount to the pod) SecretName: azure-secret ShareName: aksshare ReadOnly: false default-token-t9nvm: Type: Secret (a volume populated by a Secret) SecretName: default-token-t9nvm Optional: false QoS Class: BestEffort Node-Selectors: beta.kubernetes.io/os=linux Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 6m7s default-scheduler Successfully assigned default/mysql-6479cbbfdc-pgmnn to aks-nodepool1-10409544-0 Normal Pulling 6m5s kubelet, aks-nodepool1-10409544-0 pulling image “sinoage.azurecr.cn/mysql:v1” Normal Pulled 5m58s kubelet, aks-nodepool1-10409544-0 Successfully pulled image “sinoage.azurecr.cn/mysql:v1” Normal Created 5m48s kubelet, aks-nodepool1-10409544-0 Created container Normal Started 5m48s kubelet, aks-nodepool1-10409544-0 Started container]]> de-Selectors: beta.kubernetes.io/os=linux Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 6m7s default-scheduler Successfully assigned default/mysql-6479cbbfdc-pgmnn to aks-nodepool1-10409544-0 Normal Pulling 6m5s kubelet, aks-nodepool1-10409544-0 pulling image “sinoage.azurecr.cn/mysql:v1” Normal Pulled 5m58s kubelet, aks-nodepool1-10409544-0 Successfully pulled image “sinoage.azurecr.cn/mysql:v1” Normal Created 5m48s kubelet, aks-nodepool1-10409544-0 Created container Normal Started 5m48s kubelet, aks-nodepool1-10409544-0 Started container]]>

标签: aks33000蒸发压力变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台