项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
- 所用到的框架和插件:
dbt
airflow
英语
一、部署一个简单服务
1.1 Pod和Serivce
1. 部署地图服务
- 创建yaml文件
- 部署pod和service
kubectl apply -f .\first-pod.yaml
kubectl apply -f .\webapp-service.yaml
- 查看当前所有的服务和pod
kubectl get all
4. 访问服务
2. Port/TargetPort/NodePort
属性 | 含义 |
---|---|
targetPort: 5000 |
docker image内 Flask 应用监听在 5000 端口 |
port: 80 |
Service 对k8s内部 Pod 显示为 80 端口,其他k8s通过该接口访问呢 |
nodePort: 30080 |
外部用户访问 http://NodeIP:30080 |
1.2 服务秒切换
1. 创建新的pod
- 创建一个使用release 0-5的container的服务的Pod
- 应用该yaml
kubectl apply -f .\first-pod.yaml
- 查看当前服务的pods和labels
2. 切换为新Pod
- 将服务里的labels.name切换到新的release-0-5的服务
- 重新应用服务后,新的服务上线
kubectl apply -f .\webapp-service.yaml
1.3 添加一个队列服务
1. 添加队列服务的Pod
- 创建queque的pod
---
apiVersion: v1
kind: Pod
metadata:
name: queue
labels:
app: queque
spec:
containers:
- name: queque
image: richardchesterwood/k8s-fleetman-queue:release1
- 应用pod
kubectl apply -f .\first-pod.yaml
2. 添加队列的service
- 创建服务
apiVersion: v1
kind: Service
metadata:
name: fleetman-queue
spec:
selector:
app: queque
ports:
- name: http
port: 8161
nodePort: 30010
type: NodePort
- 应用服务
kubectl apply -f .\webapp-service.yaml
- 查看,可以看到所服务已经上线
1.4 ReplicaSet
1. 创建
- 创建RelicaSet
- 删除当前所有的pods和服务
kubectl delete all --all
- 重新应用新的Pods和服务,pod后会有随机的id
2. 删除
- 我们通过删除pods模拟单个Pod宕机的情况,由于replicaset的缘故,会重新上线新的Pod
kubectl delete pod webapp-xjgdm
- 如果想删除ReplicaSet
kubectl delete rs webapp
1.4 Deployments
1. 通过Deployment部署
- 只需要将ReplicaSet改为Deployment就可
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
selector:
matchLabels:
app: webapp
replicas: 2
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp
image: richardchesterwood/k8s-fleetman-webapp-angular:release0-5
- 通过Deployment管理pods和ReplicaSet