本文介绍如何使用 Azure 门户访问和管理 Azure Kubernetes 服务 (AKS) 资源。
先决条件
- 现有的 AKS 群集。 支持任何群集,但如果使用 Microsoft Entra 集成,则群集必须使用 AKS 托管的 Microsoft Entra 集成。
- 如果你的群集使用旧版 Microsoft Entra ID,则可以在门户中升级群集,或者使用 Azure CLI 进行升级。 还可以使用 Azure 门户 创建新的 AKS 群集。
查看 Kubernetes 资源
选择 Kubernetes 资源。 Kubernetes 资源列表显示以下类别:
- 命名空间显示群集命名空间的相关信息。
- “工作负荷”显示有关部署、Pod、副本集、StatefulSet、守护程序集、作业和部署到群集的 cron 作业的信息。
- “服务和流入量”显示群集的所有服务和流入量资源。
- 网络策略 显示控制群集内 Pod 之间的流量流的网络策略资源。
- “存储”显示 Azure 存储类和永久卷信息。
- “配置”显示群集的配置映射和敏感信息。
- 自定义资源显示部署到群集的任何自定义资源。
- 事件显示与群集相关的所有事件。
-
运行命令让你可以通过 Azure API 在群集上远程调用
kubectl和helm等命令,而无需直接连接到群集。
连接至你的 AKS 群集
若要部署 Azure 应用商店应用程序,你需要连接到 AKS 群集。 按照以下步骤使用 Azure 门户连接到群集:
- 在 AKS 群集的“概述”页中,选择“连接”。
- 按照说明使用 Azure CLI 或运行命令连接到群集。
部署 Azure 应用商店应用程序
在本部分中,我们将通过 AKS 快速入门部署 Azure 应用商店应用程序。
从“Kubernetes 资源”列表中,选择“服务和入口”。
选择创建>应用 YAML。
将以下 YAML 复制粘贴到编辑器中:
apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.azk8s.cn/azurelinux/base/rabbitmq-server:3.13 ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 100m memory: 256Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ["sh", "-c", "until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;"] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 100m memory: 256Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer选择应用。
应用程序完成部署后,你会在“服务”列表中看到以下服务:
order-serviceproduct-servicerabbitmqstore-front
监视部署洞察
在 AKS 群集上启用监控插件
启用了容器见解的 AKS 群集可以在 Azure 门户中访问各种部署见解。 如果未在群集上启用监视,可以使用以下步骤启用它:
从 AKS 群集资源的服务菜单中,选择“监视”
“洞察” “配置监控”。 在“配置容器见解”页上,选择“配置”。
监视解决方案部署并开始收集数据可能需要几分钟时间。
查看部署见解
- 从 AKS 群集资源的服务菜单中,选择“工作负载”。
- 从列表中选择一个部署以查看部署见解,例如 CPU 和内存使用情况。
提示
还可以选择监控>分析以查看有关特定节点和容器的更深入的信息。
清理资源
如果不再需要 Azure 应用商店应用程序,可以删除服务以避免产生 Azure 成本。
- 从“Kubernetes 资源”列表中,选择“服务和入口”。
- 选择要删除的服务,然后选择“ 删除”。
故障排除
未经授权的访问
若要访问 Kubernetes 资源,你需要访问 AKS 群集、Kubernetes API 和 Kubernetes 对象。 请确保是 群集管理员 或具有委派访问 AKS 群集的适当权限的用户。 有关详细信息,请参阅 AKS 的访问权限和标识选项。
查看 Kubernetes 资源不可访问
可能需要配置经过授权的 IP 范围,以便为现有群集启用 Kubernetes 资源视图。
提示
可以添加 API 服务器授权 IP 范围的 AKS 功能,以将 API 服务器限制为仅访问防火墙的公共终结点。 另一个选项是更新 --api-server-authorized-ip-ranges/-ApiServerAccessAuthorizedIpRange 以包含本地客户端计算机的访问或要从其浏览 Azure 门户的 IP 地址范围。 要允许此访问,需要计算机的公共 IPv4 地址。 可以使用以下 Azure CLI 或 Azure PowerShell 命令找到此地址。
使用以下命令检索 IP 地址:
CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)使用带
az aks update参数的--api-server-authorized-ip-ranges命令将 IP 地址添加到 AKS 批准的列表中。az aks update --resource-group <resource-group-name> --name <cluster-name> --api-server-authorized-ip-ranges $CURRENT_IP/32更新群集的授权 IP 范围后,运行以下命令以更新和合并 kubeconfig:
az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>预计输出将告知您此次更新的信息。
Merged "<cluster-name>" as current context ...
如果 AKS 群集配置为 专用群集,则必须从可以访问 AKS 群集所在的子网的网络访问 Azure 门户。 否则,由于网络连接问题,门户中无法访问 AKS 资源。
相关内容
本文介绍了如何从 Azure 门户访问 Kubernetes 资源。 若要了解有关 AKS 概念的详细信息,请参阅 Azure Kubernetes 服务(AKS)的核心概念。