前言
明天在 K8S 集群中跑一个容器化利用。
更新历史
- 20200518 - 初稿 - 左程立
- 原文地址 - https://blog.zuolinux.com/2020/05/18/first-app-on-k8s.html
如何公布容器到 K8S 中
容器起源
应用 nginx 的官网容器镜像。
公布容器的两种形式
镜像有了,咱们如何将其提交给 K8S 运行呢,有两种形式:
- 命令行形式(不举荐)。
- 配置文件形式(举荐)。
这里应用官网举荐的第二种形式,即通过将容器的各种信息写入配置文件提交给 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