4 篇文章带有标签 “cluster-operations”

Kubernetes中配置调度器

我们遇到一个场景,压榨出每一台节点的性能,需要优先调度到资源(CPU、Memory)使用最多的节点上。

了解默认调度

现有的通用调度程序是平台默认提供的调度程序引擎,它可通过三步操作来选择托管 pod 的节点:

过滤节点

根据指定的约束或要求过滤可用的节点。这可以通过名为predicates的过滤函数列表筛选每个节点来完成。

排列过滤后节点列表的优先顺序

实现方式是让每个节点通过一系列优先级函数,以为其分配从 0 到 10 的一个分数。0 代表不适合的节点,10 则代表最适合托管该 pod。调度程序配置还可以为每个优先级函数使用简单的权重(正数值)。每个优先级函数提供的节点分数乘以权重(大多数优先级的默认权重为 1),然后将每个节点从所有优先级获得的分数相加。管理员可以使用这个权重属性,为一些优先级赋予更高的重要性。

选择最适合的节点

节点按照分数排序,系统选择分数最高的节点来托管该 pod。如果多个节点的分数相同,则随机选择其中一个。

配置调度策略 编写调度策略文件,配置优先级。 配置参与打分项及权重。这里使用了 MostRequestedPriority,优先使用占用 CPU 和 Memory 多的节点。 sudo vim /etc/kubernetes/scheduler-policy-config.

Kubernetes中如何恢复误删的节点

在删除标签的时候不小心删除了节点。

$ kubectl delete nodes ln6 server-type-
node "ln6" deleted
Error from server (NotFound): nodes "server-type-" not found

主节点

在 Master 节点创建加入节点用的 Token

kubeadm token create --print-join-command
W0706 08:09:27.126498  609025 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
kubeadm join 172.16.33.157:6443 --token xxx.yyyyyy     --discovery-token-ca-cert-hash sha256:zzzzzzzzzzzzzzzzzzzzzz

工作节点(被删除的)

登录 root 用户

su - root

重置 # kubeadm reset [reset] WARNING: Changes made to this host by &#3

Kubernetes中的注解

注解

注解也是键值对,和标签类似,但没有对象的选择器来进行分组筛选,它可以容纳更多的内容(总共不超过256KB),主要用于工具的使用。Kubernetes 会将一些注解自动添加到对象。

增加(key=value)

添加域名(gouchicao.com)前缀这种格式的注解键是避免键冲突的一个好方法。

$ kubectl annotate pod kubia-manual gouchicao.com/someannotation="test"
pod/kubia-manual annotated

需要增加多个注解只需要使用空格进行分隔即可。

$ kubectl annotate pod kubia-manual key1=value1 key2=value2

查看 获取完整的 YAML 描述(-o yaml) $ kubectl get pod kubia-manual -o yaml apiVersion: v1 kind: Pod metadata: annotations: gouchicao.com/someannotation: test kubectl.kubernetes.

Kubernetes中删除节点

查看集群节点

kubectl get nodes
NAME   STATUS   ROLES    AGE    VERSION
gpu1   Ready    <none>   227d   v1.18.3
gpu2   Ready    <none>   31d    v1.18.3
ln1    Ready    master   370d   v1.18.3
ln2    Ready    <none>   370d   v1.18.3
ln3    Ready    <none>   370d   v1.18.3

驱逐节点 kubectl drain gpu2 --delete-local-data --ignore-daemonsets --force node/gpu2 already cordoned WARNING: ignoring DaemonSet-managed Pods: default/dcgm-exporter-1617245566-6gvdw, kube-system/kube-proxy-jhfh5, kube-system/nvidia-device-plugin-daemonset-spflp, kube-system/weave-net-ktsbp, monitoring/kube-prometheus-stack-prometheus-node-exporter-dpnzx, rook-ceph/csi-ce