文章目录
- 项目地址
- 一、程序部署微服务
-
- [1.1 App Services](#1.1 App Services)
- [1.2 Azure Container Registry](#1.2 Azure Container Registry)
-
- [1. 创建Registry](#1. 创建Registry)
- [2. 上传image](#2. 上传image)
- [1.3 K8s](#1.3 K8s)
-
- 1.创建k8s
- [2. 常用命令](#2. 常用命令)
- 二、程序部署
-
- [2.1 概念](#2.1 概念)
-
- [1. Namespace](#1. Namespace)
- [2. pod](#2. pod)
- [3. 创建Deployment](#3. 创建Deployment)
项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
-
所用到的框架和插件:
dbt
airflow
一、程序部署微服务
- App Services(单体架构可自动伸缩)
- Container Apps
- Kubernetes services
1.1 App Services

1.2 Azure Container Registry
1. 创建Registry

2. 上传image
-
查看当前registry的所有images
az acr list --output table
-
登录ACR
az acr login --name harshacontainerregistry
-
创建docker image 指定docker file的路径,并创建到当前目录
docker build -t demowebapp:latest -f ./DemoWebaaplication/Dockerfile .
-
给image添加tag
docker tag demowebapp:latest harshacontinerregistry.azurecr.io/demowebapp:latest
-
由于已经登录过了ACR所以直接push image
dokcer push harshacontainerregistry.azurecr.io/demowebapp:latest
-
上传成功可以看到
1.3 K8s

- 流程

1.创建k8s
- 创建resource group
- 创建k8s所需的服务
- 创建aks
- 获取crendentials用于本地登录
- 绑定container registry到k8s项目,这样他就会自动拉去images

2. 常用命令
- 获取当前所有的node
cs
kubectl get nodes
- 获取namespace
cs
kubectl get namespaces
二、程序部署
2.1 概念
1. Namespace
- 同一个集群重的资源划分为项目隔离的组,同一命名空间的资源名称要唯一,它用来隔离资源而不是网络
- 初始化会生成默认的4个namespace:①default;②kube-node-lease;③kube-public;③kube-system
-
使用yaml文件创建namespace,创建一个
my-namespace.yaml
文件apiVersion: V1
king: Namespace
metadata:
name: test-namespace -
运行
kubectl apply -f my-namespace.yaml
2. pod
- pod是k8s的最小单元,一个podl里可以有多个container或者一个,一个node下可以有多个pod
- 同一个Pod内container共享同一个ip地址和端口,他们之间可以直接通过localhost通讯,也可以直接访问共享的volumes
3. 创建Deployment
-
用于管理应用程序副本,主要功能有:自动修复/滚动升级
apiVersion: apps/v1
kind: Deployment
metadata:
# 部署名字
name: test-k8s
spec:
replicas: 2
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: test-k8s
# 定义 Pod 相关数据
template:
metadata:
labels:
app: test-k8s
spec:
# 定义容器,可以多个
containers:
- name: test-k8s # 容器名字
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像