Kubernetes Operation
大约 9 分钟
Kubernetes Operation
Use YAML to Define a K8S Pod
- apiVersion: Which version of the Kubernetes API you're using to create this object.
- Kind: What kind of object you want to create,e.g.,Pod, Deployment,Service,ResourceQuota,etc.
- Metadata Labels: put a "tag"to a Kubernetes resource,to help you manage and identify the resource better
- Spec: The spec field is where you'll describe the object in greater detail
Creating the first Pod
必须禁用交换功能,Kubelet 才能正常工作
Kubernetes principle:"predictability and consistency"
- 工作负载需求应与主机内存相匹配,以提高可预测性和一致性。
- 杀死单个容器以释放内存,而不是让多个容器在一台机器上以不可预知的(可能是缓慢的)速度运行。
Requests and Limits
Requests:
- 调度程序会使用这些信息来决定将 Pod 放在哪个节点上。
- 至少保留该容器的请求量
- 实际上,所有容器使用的内存都比请求的要多。
Limit:
- 如果容器试图使用超过其限制的资源,系统就会终止该容器。
- 在 Kubernetes 中,限制适用于容器,而不是 Pod
- Overcommit:所有限制的总和 大于 节点容量,这很常见
区分
Requests 是保证容器至少可以得到的资源,而 Limits 是容器可以使用的最大资源。
- Requests: 这是你为容器设置的最低资源需求。
- 当 Kubernetes 调度器(scheduler)决定在哪个节点上运行新的 Pod 时,它会考虑每个 Pod 的请求。
- 节点必须有足够的可用资源来满足 Pod 的请求,否则 Pod 不会被调度到该节点上。
- 这样可以确保每个 Pod 至少有它所需的资源量。
- Limits: 这是你为容器设置的最大资源需求。
- 如果一个容器试图超出这个限制,它可能会被系统杀掉。如果它持续地超出限制,它可能会被反复杀掉。
- 如果你没有设置限制,那么容器可以使用节点上所有可用的资源。
例如,如果你为一个容器设置了 1 CPU 的请求和 2 CPU 的限制,那么这个容器至少会得到 1 CPU 的资源,但是它可能会使用多达 2 CPU 的资源。
Namespace and Namespace Quota
Create Namespace
命名空间「Namespaces」适用于多个用户分布在多个团队或项目中的环境。
命名空间配额限制一个命名空间中所有 pod 可消耗的群集资源数量。
使用:当多个用户或团队共享一个具有固定节点数的集群时,每个团队使用的资源不应超过其合理份额。
Set Namespace Quota
View Namespace Quota
- limit aggregate resource consumption per namespace
- 您可以限制在给定命名空间中请求/消耗的资源
Assigning Pods to Nodes
by nodeName
- 通过设置 nodeName 将 pod 安排到某个特定节点
- (节点选择约束的最简单形式)
注意
警告:灵活性较差。如果命名的节点不存在或没有足够的资源,pod 将无法运行,在某些情况下可能会被自动删除(不建议使用)。
by nodeSelector
- nodeSelector 是节点选择约束的最简单推荐形式
- Note:the node must have each of the indicated keyvalue pairs as labels