Kubernetes部署速查表

时间:2020-01-09 10:34:20  来源:igfitidea点击:

Kubernetes配置通常用YAML文件编写,并且特定的语法通常很难记住。更糟糕的是,必须记住要记住为每个资源使用哪个apiVersion。

在本文中,我将提供一些快速创建和应用YAML清单新部署的方法。

部署YAML模板

以下是基本部署YAML清单的示例。它创建了一个名为hello-world-deployment的部署,该部署为hello-world-app设置了3个容器的copysetSet状态。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello-world-app
  template:
    metadata:
      labels:
        app: hello-world-app
    spec:
      containers:
      - image: gcr.io/my-project/hello-world-app
        name: hello-world-app
        ports:
        - containerPort: 80

就像上面的示例一样,记住飞行中的部署清单的结构可能很棘手。

使用Kubectl生成部署清单

我们可以使用kubectl run命令生成一个新的部署清单。以下示例将为Kubernetes集群创建一个新的部署清单。

kubectl create deployment hello-world-deployment --image=hello-world-app:1.0.0 --dry-run -o yaml

该命令的两个最重要的部分是--dry-run-o yaml。第一个标志阻止kubectl将请求发送到Kuberentes api-controller,第二个标志指示输出以YAML格式设置。

执行后,以下内容将输出到屏幕,我们可以根据需要将其通过管道传输到文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: hello-world-deployment
  name: hello-world-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-world-deployment
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: hello-world-deployment
    spec:
      containers:
      - image: hello-world-app
        name: hello-world-app
        resources: {}
status: {}

尽管输出将提供一个良好的起点,但需要进行一些清理。通过从清单文件中删除不必要的字段,我们将得到以下内容。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello-world-deployment
  strategy: {}
  template:
    metadata:
      labels:
        app: hello-world-deployment
    spec:
      containers:
      - image: hello-world-app
        name: hello-world-app

将部署应用于Kubernetes集群

要在Kubernetes集群上创建部署,我们将需要运行kubectl apply命令。

kubectl apply -f hello-world-deployment.yml