赞
踩
https://kubernetes.io/docs/tasks/tools/#kubectl
Azure Kubernetes 服务 (AKS) 通过将操作开销卸载到 Azure,简化了在 Azure 中部署托管 Kubernetes 群集的过程。 作为一个托管的 Kubernetes 服务,Azure 可以自动处理运行状况监视和维护等关键任务。 创建 AKS 群集时,系统会自动创建和配置控制平面。 此控制平面作为提取自用户的 Azure 托管资源免费提供。 你只为附加到 AKS 群集的节点付费并对其进行管理。
# az是微软云的cmd工具,可以执行各种cmd命令,比如拉取aks证书等,所以我们先安装az工具
- # 先决条件
- # 安装 az
- sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
- 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" | sudo tee /etc/yum.repos.d/azure-cli.repo
- yum -y install azure-cli
- # 登录 az
- # 打开 Azure CLI 切换到中国区 -n AzureChinaCloud
- az cloud set -n AzureChinaCloud # /切换至AzureChina
- az login # /登录Azure
- # 运行以下命令
- az account set --subscription 45xxxx-75df-475d-ad1b-xxxxxxxx # 45xxx换成自己的订阅号
- az account set -n AzureChinaCloud --subscription 45xxxx-75df-475d-ad1b-xxxxxxxx # 45xxx换成自己的订阅号
- #
- az aks get-credentials --resource-group uat-all --name uat-k8s-all # 换成自己的aks name
如果习惯kubectl:
-
- # 安装 kubectl
- 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
- webgroup_id=$(az ad group create --display-name webgroup --mail-nickname webgroup --query objectId -o tsv)
-
- webuser_id=$(az ad user create --display-name "web user" \
- --user-principal-name "webuser@mtr.partner.onmschina.cn" \
- --password "Password" \
- --query objectId -o tsv)
-
- AKS_ID=$(az aks show \
- --resource-group test-all-group \
- --name test-k8s-all \
- --query id -o tsv)
-
- webgroupid:
- 7e9c40f2-eaf4-4cef-a3b3-f298f776f282
第二步:把AKS和web组联系起来 在集群设置里面添加 web这个组
设置AKS集群允许Azure AD RBAC认证
第三步:创建namespace,创建Role和Role Binding
cat web-ns-role.yaml 这个权限其实也不是完全fuul,只是常用的资源,缺少 statatfulset 和daemon等资源的权限
-
- kind: Role
- apiVersion: rbac.authorization.k8s.io/v1
- metadata:
- name: web-full-access # 绑定的时候会用到
- namespace: web
- rules:
- - apiGroups: ["", "extensions", "apps"]
- resources: ["services", "endpoints", "pods","deployments","replicasets"]
- verbs: ["get", "list", "watch","update","patch", "delete","create"]
# 这个是只读 留着备用
- kind: Role
- apiVersion: rbac.authorization.k8s.io/v1
- metadata:
- name: web-limited-access # 绑定的时候会用到
- namespace: web
- rules:
- - apiGroups: ["", "extensions", "apps"]
- resources: ["services", "endpoints", "pods","deployments","replicasets"]
- verbs: ["get", "list", "watch"] # 去掉了 update等权限
cat web-full-rolebind.yaml
-
- kind: RoleBinding
- apiVersion: rbac.authorization.k8s.io/v1
- metadata:
- name: web-group-access-1
- namespace: web
-
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: Role
- name: web-full-access # 绑定的role的名字 如果想只读就用 web-limited-access
-
- subjects:
- - kind: Group
- namespace: web
- name: 7e9c40f2-eaf4-4cef-a3b3-f298f776f282 # Azure的web组的id
- kubectl apply -f web-ns-role.yaml
- kubectl apply -f web-full-rolebind.yaml
# 获取 kubeconfig到当前用户 会提示 az 和kubectl 使用 web用户登录的浏览器
后期推荐使用命令行直接登录:
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示例
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: mytest
- labels:
- app: mytest
- spec:
- replicas: 1
- selector:
- matchLabels:
- app: cybeego
- template:
- metadata:
- labels:
- app: cybeego
- spec:
- containers:
- - name: cybeego
- image: testharbor.azurecr.cn/it/nginx_cybeego
- ports:
- - containerPort: 8888
- ---
- apiVersion: v1
- kind: Service
- metadata:
- name: mytest-service
- spec:
- selector:
- app: cybeego
- ports:
- - protocol: TCP
- port: 80
- targetPort: 8888
- ---
- apiVersion: networking.k8s.io/v1
- kind: Ingress
- metadata:
- name: cybeego
- annotations:
- kubernetes.io/ingress.class: azure/application-gateway
- appgw.ingress.kubernetes.io/health-probe-path: "/"
- spec:
- rules:
- - http:
- paths:
- - path: /
- pathType: Prefix
- backend:
- service:
- name: mytest-service
- port:
- number: 80
执行之后会自动在微软waf上面创建 后端池、后端、侦听器、规则四块需要ui操作的,还是挺方便的。
aks监控可以直接接入grafana,有成熟模板,后期再补充示例。
日志是azure统一的日志,事件暂时没有找到持久化存储的相关产品,后续补充。
待续。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。