Kubernetes编程——什么是 Kubernetes 编程?
Posted 左扬(你们的胃叫胃,孤的叫胃PLUS)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes编程——什么是 Kubernetes 编程?相关的知识,希望对你有一定的参考价值。
什么是 Kubernetes 编程?
这里的 Kubernetes编程 指开发原生 Kubernetes 应用,这类应用通过与 API 服务器进行开发,直接查询、更新资源的状态。
这里不会在 `Controller` 和 `Operator` 中,这里也不会过多关注操作层面的东西,而是会关注开发和测试的阶段。
因此,我们会聊下关于如何开发纯正的云原生应用。
一、举个例子
我们把这个例子叫做 `cnat`,其工作逻辑是:假如你想让 cnat 在 2023年5月21日凌晨2点运行命令echo "Hello, Shanghai!",你可以这么做:
Kubernetes设置污点以及容忍
K8S集群内有一台212专门用来做数据库服务器,磁盘是基于SSD。1.设置212污点
kubectl taint node 172.17.10.212 disk=ssd:NoSchedule
2.数据库的deployment
spec:
tolerations:
- key: "disk"
operator: "Equal"
value: "ssd"
effect: "NoSchedule"
nodeSelector:
kubernetes.io/hostname: 172.17.10.212
这样子数据库就只会在212这台机器上跑,同时其他服务不会调度在这台。
kubectl taint node [node] key=value[effect]
其中[effect] 可取值: [ NoSchedule | PreferNoSchedule | NoExecute ]
NoSchedule :一定不能被调度。
PreferNoSchedule:尽量不要调度。
NoExecute:不仅不会调度,还会驱逐Node上已有的Pod。
查看节点的污点:
kubectl describe node/node_name |grep Taint
如何取消污点:
去除指定key及其effect:
kubectl taint nodes node_name key:[effect]- #(这里的key不用指定value)
去除指定key所有的effect:
kubectl taint nodes node_name key-
deploy容忍污点:
tolerations:
- key: "disk"
operator: "Equal" #Equal意味着这个值等于value,如果是Exists,则不需要填写value,只要有这个key就容忍
value: "ssd"
effect: "NoSchedule"
以上是关于Kubernetes编程——什么是 Kubernetes 编程?的主要内容,如果未能解决你的问题,请参考以下文章