前言

明天在 K8S 集群中跑一个容器化利用。

更新历史

  • 20200518 - 初稿 - 左程立
  • 原文地址 - https://blog.zuolinux.com/2020/05/18/first-app-on-k8s.html

如何公布容器到 K8S 中

容器起源

应用 nginx 的官网容器镜像。

公布容器的两种形式

镜像有了,咱们如何将其提交给 K8S 运行呢,有两种形式:

  1. 命令行形式(不举荐)。
  2. 配置文件形式(举荐)。

这里应用官网举荐的第二种形式,即通过将容器的各种信息写入配置文件提交给 K8S。

定义容器配置文件

创立一个 nginx.yaml 文件
[root@master01 ~]# cat nginx.yaml apiVersion: v1kind: Podmetadata: name: nginxspec:  containers:    - name: nginx      image: nginx:1.7.9       ports:         - containerPort: 80  hostAliases:  - ip: "10.20.20.20"    hostnames:    - "test1.com"    - "test2.com"

部署容器到 K8S 中

[root@master01 ~]# kubectl apply -f nginx.yaml pod/nginx created

查看容器的运行状况

[root@master01 ~]# kubectl get pods -o wideNAME    READY   STATUS    RESTARTS   AGE   IP               NODE     NOMINATED NODE   READINESS GATESnginx   1/1     Running   0          93s   192.10.205.195   work01   <none>           <none>

查看容器的具体信息

所有重要操作,都会被记录在kubectl describe 指令返回的 Events 里,用于 DEBUG
[root@master01 ~]# kubectl describe pod nginxName:         nginxNamespace:    defaultPriority:     0Node:         work03/192.168.10.17IP:           192.10.137.130.....省略......Events:  Type    Reason     Age        From               Message  ----    ------     ----       ----               -------  Normal  Scheduled  <unknown>  default-scheduler  Successfully assigned default/nginx to work03  Normal  Pulled     74s        kubelet, work03    Container image "nginx:1.7.9" already present on machine  Normal  Created    73s        kubelet, work03    Created container nginx  Normal  Started    73s        kubelet, work03    Started container nginx

降级容器中nginx版本

# 批改 nginx.yamlimage: nginx:1.9.0# 提交给 K8S# kubectl apply -f nginx.yaml 

删除该容器利用

[root@master01 ~]# kubectl delete -f nginx.yaml pod "nginx" deleted[root@master01 ~]# kubectl get podsNo resources found in default namespace.

nginx.yaml 参数简介

参数定义,分为 metadata 和 Spec 两局部:metadata   寄存元数据Spec           寄存这个对象独有的定义,用于形容它要表白的性能
kind: Pod指明是一个 Pod 类型的API对象,该对象操作治理另一种 API 对象即PodmetadataAPI 对象的标识,即这个 Pod 的标识spec.containers表明是一个容器相干参数spec.hostAliases给容器的 /etc/hosts 文件中减少解析

查看 Pod 帮忙文档

[root@master01 ~]# kubectl explain Pod

结束语

明天公布了一个容器利用到K8S中。

咱们能够看到,容器确保了"零碎环境"在开发/测试/生产中的一致性,YAML 配置文件能够确保"配置参数"的一致性。

但如同有点晕,不是公布容器吗,那么 Pod 又是什么?

Pod 把容器进行了包装,K8S 能够操作的最小单元是 Pod,Pod 里蕴含了容器。

分割我

微信公众号:zuolinux_com