k8s从入门到精通(二):启动第一个hello world应用

上一篇文章我们通过kubeadm 部署了一个k8s 集群,下面开始小试牛刀,创建我们的第一个 hello world 应用部署。

k8s从入门到精通(二):启动第一个hello world应用

下面是一个Deployment的模板。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

先不管三七二十一,我们先创建,然后再慢慢解释这些参数的意义。

$ kubectl create -f nginx.yaml
deployment.apps/nginx-deployment created

可以看到deployment 已经成功创建。查看deployment

$ kubectl get deploy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   1/2     2            0           42s

查看deployment 下面的Pod的状态,可以看到一个Pod已经Ready了,而另一个Pod正在启动中。

$ kubectl get pods
NAME                                READY   STATUS              RESTARTS   AGE
nginx-deployment-5bf87f5f59-57894   1/1     Running             0          54s
nginx-deployment-5bf87f5f59-xbbj9   0/1     ContainerCreating   0          54s

等待一段时间后,两个Pod 的状态都将变成Running 状态。下面我们再详细分解一下上面Deployment里面参数。

首先是 spec.selector.matchLabels 和 spec.template.metadata.labels 这个组合,其中 matchLabels 定义了这个deployment 筛选Pod的逻辑,凡是符合和 matchLabels 标签的都属于这个deployment 管理,labels 定义这个Pod的标签,通过这个模板创建的Pod 都会自动打上这个标签。关于label 筛选的内容之后单独通过文章介绍。

第二个重要的参数是 spec.replicas 它定义了这个deployment的副本数,就是这个deployment下面有几个Pod。

第三个参数是 spec.template.spec.containers 定义了一个Pod里面的容器列表。至于k8s为啥设计一个Pod 里面多个容器,下一篇文章介绍。 每个container 里面又包含了容器的镜像、环境变量、以及端口等,也就是我们在docker run 后面的那些参数。

展开阅读全文

页面更新:2024-04-21

标签:都会   组合   篇文章   副本   集群   端口   分解   容器   环境变量   逻辑   入门   定义   模板   状态   参数   标签   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top