Kubernetes 容器应用

2018年7月27日16:47:36 发表评论 2,850 ℃

1、运行Deployment

kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2 #部署包含两个deployment nginx-deployment 容器的images为nginx:1.7.9

kubectl get deployment nginx-deployment  #查看nginx-deployment的状态

kubectl describe deployment nginx-deployment # 查看详细的nginx-deployment状态

kubectl get replicaset #查看replicaset

Kubernetes 容器应用

kubectl describe replicaset nginx-deployment-6fb585c4cc #查看nginx-deployment-6fb585c4cc详细信息

Kubernetes 容器应用

Controlled By 指明此ReplicaSet是由Deploymnet nginx-deployment创建的。

kubectl get pod #查看pod

Kubernetes 容器应用

kubectl describe pod nginx-deployment-6fb585c4cc-m4tp8 #查看nginx-deployment-6fb585c4cc-m4tp8详细情况

Kubernetes 容器应用

Controlled By 指明此 Pod 是由 nginx-deployment-6fb585c4cc 创建。Events 记录了 Pod 的启动过程。

总结一下这个过程:用户通过 kubectl 创建 Deployment。Deployment 创建 ReplicaSet。ReplicaSet 创建 Pod。

Kubernetes 容器应用

对象的命名方式是:子对象的名字 = 父对象名字 + 随机字符串或数字

2、命令VS配置文件

Kubernetes 支持两种方式创建资源:

1.用 kubectl 命令直接创建,比如:kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2在命令行中通过参数指定资源的属性。

2.通过配置文件和 kubectl apply 创建,要完成前面同样的工作,可执行命令:kubectl apply -f nginx.ymlnginx.yml 的内容为:

Kubernetes 容器应用

3、Deployment配置文件简介

Kubernetes 容器应用

① apiVersion 是当前配置格式的版本。

② kind 是要创建的资源类型,这里是 Deployment。

③ metadata 是该资源的元数据,name 是必需的元数据项。

④ spec 部分是该 Deployment 的规格说明。

⑤ replicas 指明副本数量,默认为 1。

⑥ template 定义 Pod 的模板,这是配置文件的重要部分。

⑦ metadata 定义 Pod 的元数据,至少要定义一个 label。label 的 key 和 value 可以任意指定。

⑧ spec 描述 Pod 的规格,此部分定义 Pod 中每一个容器的属性,name 和 image 是必需的。

kubectl delete deployment nginx-deployment 或者 kubectl delete -f nginx.yml #删除nginx应用

4、伸缩

直接修改nginx.yml 将relicas 修改成 对应的数字,然后执行kubectl apply -f nginx.yml出于安全考虑,默认配置下 Kubernetes 不会将 Pod 调度到 Master 节点。

如果希望将 master 也当作 Node 使用,可以执行如下命令:kubectl taint node masterName node-role.kubernetes.io/master-如果要恢复 Master Only 状态,执行如下命令:kubectl taint node masterName node-role.kubernetes.io/master="":NoSchedule

5、用label控制pod的位置

kubectl label node node1 disktype=ssd #定义node1为disktype

kubectl get node --show-labels #查看节点label重新定义nginx.yml将pod部署到node1

Kubernetes 容器应用

[k8s@master ~]$ kubectl apply -f nginx.yml

Kubernetes 容器应用

kubectl label node node1 disktype- #删除node label disktype删除label不会影响原来部署的pod

6、DaemonSet

特点:每个 Node 上最多只能运行一个副本。DaemonSet 的典型应用场景有:在集群的每个节点上运行存储 Daemon,比如 glusterd 或 ceph。在每个节点上运行日志收集 Daemon,比如 flunentd 或 logstash。在每个节点上运行监控 Daemon,比如 Prometheus Node Exporter 或 collectd。

kubectl get daemonset --namespace=kube-system # 查看DaemonSet运行的系统组件kubectl edit deployment nginx-deployment 查看资源配置和运行状态

运行自己的daemonset

运行prometheus监控

Kubernetes 容器应用

① 直接使用 Host 的网络。

② 设置容器启动命令。

③ 通过 Volume 将 Host 路径 /proc、/sys 和 / 映射到容器中。我们将在后面详细讨论 Volume。

执行:kubectl apply -f node_exporter.yml

Kubernetes 容器应用

7、Job

服务类容器

Deployment、ReplicaSet、DaemonSet

http server ,daemon

工作类容器

Job

一次性任务

Kubernetes 容器应用

① batch/v1 是当前 Job 的 apiVersion。

② 指明当前资源的类型为 Job。

③ restartPolicy 指定什么情况下需要重启容器。对于 Job,只能设置为 Never 或者 OnFailure。对于其他 controller(比如 Deployment)可以设置为 Always 。

Job的并行性

parallelism:设置并行运行pod数量

completions:设置完成pod总数

Kubernetes 容器应用

定时Job

Kubernetes 容器应用

① batch/v2alpha1 是当前 CronJob 的 apiVersion。

② 指明当前资源的类型为 CronJob。

③ schedule 指定什么时候运行 Job,其格式与 Linux cron 一致。这里 */1 * * * * 的含义是每一分钟启动一次。

④ jobTemplate 定义 Job 的模板,格式与前面 Job 一致。

Kubernetes 默认没有 enable CronJob 功能,需要在 kube-apiserver 中加入这个功能。方法很简单,修改 kube-apiserver 的配置文件 /etc/kubernetes/manifests/kube-apiserver.yaml:

Kubernetes 容器应用

然后重启 kubelet 服务:systemctl restart kubelet

#kubectl api-versions 查看是否支持batch/v2alpha1

Kubernetes 容器应用

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: