k8s の deployment
之前提到的 pod
,一般只用于调试测试,在实际的生产环境中,则需要 Deployment
等控制器管理部署 Pod,维持 Pod 的副本数量以及 Pod 监控和维护。
创建deployment
使用命令行创建
kubectl create deployment nginx --image=nginx:latest
查看 deployment 部署状态
kubectl get deployments.apps -owide
此时可以看到,nginx 已经被调度成功
服务最终是以 pod
的形式,运行在服务器上。具体的 pod
是运行在哪个节点上,需要通过 pod
层面查看
kubectl get pods -owide
根据如上信息,可以看出
- 当前
pod
运行在 peng 这个node
上。 pod
名称是由 deployment+随机支付串 构成
查看某个 deployment 详细信息
# 使用 get 查询
kubectl get deployments.apps nginx-deployment -oyaml
# 使用 describe 查询
kubectl describe deployments.apps nginx-deployment
describe
可查询 events
,其他情况建议使用 get
查询
如何判断一个 Pod 是由通过 deployment 控制器启动的,还是直接启动的
kubectl describe pods nginx-7c658794b9-q8j2s
使用 yaml 文件创建
很多开源软件提供了 YAML 文件,我们通过 YAML 文件可以快速部署服务,如 Redis、Consul 等。
kubectl apply -f ./nginx-deployment.yaml
k8s
官网给出的 yaml 文件示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
如果我们一开始,不知道怎么使用写对应的yaml
文件,可以使用命令行创一个,但是并不真正的启动
kubectl create deployment testnginx --image=nginx:latest --dry-run=client -o yaml
-dry-run 表示并不真正的提交,取值可以为 none、server或client;使用 client 就是将结果输出到控制台
为方便,可以直接将结果保存为 yaml
文件
kubectl create deployment testnginx --image=nginx:latest --dry-run=client -o yaml > aa.yaml