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

根据如上信息,可以看出

  1. 当前 pod 运行在 peng 这个 node 上。
  2. 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
posted @ 2024-04-05 00:02  沧海一声笑rush  阅读(5)  评论(0编辑  收藏  举报