当前位置:   article > 正文

微软云azure和 aks系列文章 - 含azure az安装 - curl安装kubectl_azure aks

azure aks

kubeclt工具下载:

https://kubernetes.io/docs/tasks/tools/#kubectl

AKS简介

Azure Kubernetes 服务 (AKS) 通过将操作开销卸载到 Azure,简化了在 Azure 中部署托管 Kubernetes 群集的过程。 作为一个托管的 Kubernetes 服务,Azure 可以自动处理运行状况监视和维护等关键任务。 创建 AKS 群集时,系统会自动创建和配置控制平面。 此控制平面作为提取自用户的 Azure 托管资源免费提供。 你只为附加到 AKS 群集的节点付费并对其进行管理。

零  先决条件 Azure基础之 az安装

# az是微软云的cmd工具,可以执行各种cmd命令,比如拉取aks证书等,所以我们先安装az工具

  1. # 先决条件
  2. # 安装 az
  3. sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
  4. echo -e "[azure-cli]
  5. name=Azure CLI
  6. baseurl=https://packages.microsoft.com/yumrepos/azure-cli
  7. enabled=1
  8. gpgcheck=1
  9. gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo
  10. yum -y install azure-cli
  1. # 登录 az
  2. # 打开 Azure CLI 切换到中国区 -n AzureChinaCloud
  3. az cloud set -n AzureChinaCloud # /切换至AzureChina
  4. az login # /登录Azure
  5. # 运行以下命令
  6. az account set --subscription 45xxxx-75df-475d-ad1b-xxxxxxxx # 45xxx换成自己的订阅号
  7. az account set -n AzureChinaCloud --subscription 45xxxx-75df-475d-ad1b-xxxxxxxx # 45xxx换成自己的订阅号
  8. #
  9. az aks get-credentials --resource-group uat-all --name uat-k8s-all # 换成自己的aks name

如果习惯kubectl

  1. # 安装 kubectl
  2. curl -LO https://dl.k8s.io/release/v1.22.0/bin/linux/amd64/kubectl

一 认证

先了解一下 原生K8S证书基础知识  :

图来自于:https://www.cnblogs.com/chinasoft/p/15896403.html

原生K8S操作步骤:

操作步骤文章:https://jimmysong.io/kubernetes-handbook/guide/kubectl-user-authentication-authorization.html

Azure的rbac ,一句话该块的话就是: 基于K8S进行授权,但是认证体系走azure部分。

推荐文章(已测试可用):AKS (9) 基于Azure AD的AKS RBAC访问控制 - Lei Zhang的博客 - 博客园

示例:

  第一步:az api创建  web组 web用户 获取到 web组的 id

  1. webgroup_id=$(az ad group create --display-name webgroup --mail-nickname webgroup --query objectId -o tsv)
  2. webuser_id=$(az ad user create --display-name "web user" \
  3. --user-principal-name "webuser@mtr.partner.onmschina.cn" \
  4. --password "Password" \
  5. --query objectId -o tsv)
  6. AKS_ID=$(az aks show \
  7. --resource-group test-all-group \
  8. --name test-k8s-all \
  9. --query id -o tsv)
  10. webgroupid:
  11. 7e9c40f2-eaf4-4cef-a3b3-f298f776f282

  第二步:把AKS和web组联系起来  在集群设置里面添加 web这个组

                设置AKS集群允许Azure AD RBAC认证

  第三步:创建namespace,创建Role和Role Binding

cat web-ns-role.yaml  这个权限其实也不是完全fuul,只是常用的资源,缺少 statatfulset 和daemon等资源的权限

  1. kind: Role
  2. apiVersion: rbac.authorization.k8s.io/v1
  3. metadata:
  4. name: web-full-access # 绑定的时候会用到
  5. namespace: web
  6. rules:
  7. - apiGroups: ["", "extensions", "apps"]
  8. resources: ["services", "endpoints", "pods","deployments","replicasets"]
  9. verbs: ["get", "list", "watch","update","patch", "delete","create"]

 # 这个是只读 留着备用

  1. kind: Role
  2. apiVersion: rbac.authorization.k8s.io/v1
  3. metadata:
  4. name: web-limited-access # 绑定的时候会用到
  5. namespace: web
  6. rules:
  7. - apiGroups: ["", "extensions", "apps"]
  8. resources: ["services", "endpoints", "pods","deployments","replicasets"]
  9. verbs: ["get", "list", "watch"] # 去掉了 update等权限

cat web-full-rolebind.yaml

  1. kind: RoleBinding
  2. apiVersion: rbac.authorization.k8s.io/v1
  3. metadata:
  4. name: web-group-access-1
  5. namespace: web
  6. roleRef:
  7. apiGroup: rbac.authorization.k8s.io
  8. kind: Role
  9. name: web-full-access # 绑定的role的名字 如果想只读就用 web-limited-access
  10. subjects:
  11. - kind: Group
  12. namespace: web
  13. name: 7e9c40f2-eaf4-4cef-a3b3-f298f776f282 # Azure的web组的id
  1. kubectl apply -f web-ns-role.yaml
  2. kubectl apply -f web-full-rolebind.yaml

# 获取 kubeconfig到当前用户    会提示 az 和kubectl 使用 web用户登录的浏览器

后期推荐使用命令行直接登录:

https://github.com/Azure/kubelogin

GitHub - Azure/kubelogin: A Kubernetes credential (exec) plugin implementing azure authentication

az aks get-credentials --resource-group test-all-group --name test-k8s-all --overwrite-existing

二 存储

默认自带的几个sc都可以用,默认的pvc的创建的name是随机的 英文名称,创建好之后会在azure的存储账户里面看到。

# azure 创建pvpvc流程

# 1 创建sc aks 默认也有一些sc

kubectl get sc

W1219 03:23:12.990766 3957588 azure.go:92] WARNING: the azure auth plugin is deprecated in v1.22+, unavailable in v1.26+; use https://github.com/Azure/kubelogin instead.

To learn more, consult https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins

NAME                    PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE

azurefile               file.csi.azure.com   Delete          Immediate              true                   33d

# azurefile-csi:使用 Azure 标准存储创建 Azure 文件共享。

# azurefile-csi-premium:使用 Azure 高级存储创建 Azure 文件共享。

azurefile-csi           file.csi.azure.com   Delete          Immediate              true                   33d

azurefile-csi-premium   file.csi.azure.com   Delete          Immediate              true                   33d

azurefile-premium       file.csi.azure.com   Delete          Immediate              true                   33d

default (default)       disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

managed                 disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

managed-csi             disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

managed-csi-premium     disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

managed-premium         disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   33d

my-azurefile            file.csi.azure.com   Delete          Immediate              true                   25d

my-azurefile2           file.csi.azure.com   Delete          Immediate              true                   16d

# 例子1 azurefile-csi

# cat azure-pvc2.yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: azurefile-csi-pvc

spec:

  accessModes:

    - ReadWriteMany

  storageClassName: azurefile-csi

  resources:

    requests:

      storage: 10Gi

# kubectl get pvc

NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS    AGE

azurefile-csi-pvc   Bound    pvc-eb9ecda6-12a9-48b8-a176-5cac9f46a66b   10Gi       RWX            azurefile-csi   3s

# 官方文档参考

https://learn.microsoft.com/zh-cn/azure/aks/azure-files-csi

三 网络

aks的网络 类似于 腾讯tke,pod网络和是和 linux虚拟机可以互通的,因此也要注意pod的网段的划分

可以直接创建一个 waf 绑定到ask直接使用

# ingress示例

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: mytest
  5. labels:
  6. app: mytest
  7. spec:
  8. replicas: 1
  9. selector:
  10. matchLabels:
  11. app: cybeego
  12. template:
  13. metadata:
  14. labels:
  15. app: cybeego
  16. spec:
  17. containers:
  18. - name: cybeego
  19. image: testharbor.azurecr.cn/it/nginx_cybeego
  20. ports:
  21. - containerPort: 8888
  22. ---
  23. apiVersion: v1
  24. kind: Service
  25. metadata:
  26. name: mytest-service
  27. spec:
  28. selector:
  29. app: cybeego
  30. ports:
  31. - protocol: TCP
  32. port: 80
  33. targetPort: 8888
  34. ---
  35. apiVersion: networking.k8s.io/v1
  36. kind: Ingress
  37. metadata:
  38. name: cybeego
  39. annotations:
  40. kubernetes.io/ingress.class: azure/application-gateway
  41. appgw.ingress.kubernetes.io/health-probe-path: "/"
  42. spec:
  43. rules:
  44. - http:
  45. paths:
  46. - path: /
  47. pathType: Prefix
  48. backend:
  49. service:
  50. name: mytest-service
  51. port:
  52. number: 80

执行之后会自动在微软waf上面创建 后端池、后端、侦听器、规则四块需要ui操作的,还是挺方便的。

四 监控 日志

aks监控可以直接接入grafana,有成熟模板,后期再补充示例。

日志是azure统一的日志,事件暂时没有找到持久化存储的相关产品,后续补充。

五 安全

待续。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/284431
推荐阅读
相关标签
  

闽ICP备14008679号