一、前言
1.1 什么是AKS
AKS是托管Kubernetes服务的平台,可以让你快速部署和管理集群,Kubernetes的master节点由Azure管理和创建,所以,我们只需要创建和维护node节点即可。且也只需要支付node节点的费用。
官方参考手册:https://docs.microsoft.com/zh-cn/azure/aks/
二、AKS集群部署
部署AKS集群的方式有多种,我们这里通过Azure CLI来进行部署
2.1 在浏览器界面点击cloud shell
2.2 选择bash进行操作
新建资源组
jw@Azure:~$ az group create --name k8sGroup --location southeastasia
--name 指定资源组的名称
--location 指定所属区域
{
"id": "/subscriptions/0f2e81dd-a3d2-4cf4-af28-dffea5b2c315/resourceGroups/k8sGroup",
"location": "southeastasia",
"managedBy": null,
"name": "k8sGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
部署AKS集群
jw@Azure:~$ az aks create -g k8sGroup -n k8s-cluster --node-count 1 --enable-addons monitoring --generate-ssh-keys --node-vm-size Standard_DC2ds_v3
| Running ..
等待执行完成即可,执行完成会有一串json字符串输出
--node-count 1 指定node节点数量
--enable-addons 指定安装的插件
--generate-ssh-key 生成一个公钥并存放在~/.ssh目录下
--node-vm-size 指定node的大小
连接到集群
配置在Azure CLI上配置kubectl,这样方便管理和操作
jw@Azure:~$ az aks get-credentials -n k8s-cluster -g k8sGroup
Merged "k8s-cluster" as current context in /home/jw/.kube/config
检验连接情况
jw@Azure:~$ kubectl get node
NAME STATUS ROLES AGE VERSION
aks-nodepool1-11362444-vmss000000 Ready agent 3m28s v1.22.6
三、部署应用测试
简单的部署一个nginx服务来测试
jw@Azure:~$ vi nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: svc-nginx
spec:
selector:
app: nginx
type: ClusterIP #类型设置为ClusterIP,表示仅供内部访问
ports:
- port: 80
执行查看效果
jw@Azure:~$ kubectl apply -f nginx.yaml
pod/nginx unchanged
service/svc-nginx configured
jw@Azure:~$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx 1/1 Running 0 13m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 25m
service/svc-nginx ClusterIP 10.0.37.84 <none> 80/TCP 13m
四、对外提供访问
我们只需将SVC下的Type类型设置为:LoadBalancer即可
LoadBalancer:
这个需要公有云供应商的支持下才有用,Azure提供了这个功能,会为Loadbalancer提供一个external ip 外部访问IP地址,以供internete接入,如下所示。
jw@Azure:~$ cat nginx.yaml
......
selector:
app: nginx
type: LoadBalancer #类型修改为LoadBalancer
ports:
- port: 80
-
重新执行,更新状态
jw@Azure:~$ kubectl apply -f nginx.yaml
pod/nginx unchanged
service/svc-nginx unchanged
jw@Azure:~$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 47m
svc-nginx LoadBalancer 10.0.37.84 20.43.148.228 80:32065/TCP 34m
上面会多出一个EXTERNAL-IP,外部IP地址。
访问测试