k8s不常用设置-禁止master调度

Posted zhaobowen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s不常用设置-禁止master调度相关的知识,希望对你有一定的参考价值。

一、禁止master节点调度

有两种方法,一种是自带的命令(越来越完善了)另一种是通过添加污点来禁止调度。

1、自带命令
cordon 和 uncordon是k8s上的两个维护命令,一般用于节点出现问题时维护使用的。

kubectl cordon master禁止节点调度

kubeclt uncordon master 允许节点调度

2、设置污点

语法:

kubectl taint node [node] key=value[effect]

[effect] 可取值: [ NoSchedule | PreferNoSchedule | NoExecute ]
NoSchedule: 一定不能被调度
PreferNoSchedule: 尽量不要调度
NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod

示例:
kubectl taint node k8s-master node-role.kubernetes.io/master-允许master调度

kubectl taint nodes master node-role.kubernetes.io/master=:NoSchedule禁止master调度

kubectl describe node master |grep Taints查看污点

3、设置容忍master污点
在 pod 的 spec 中设置 tolerations 字段
tolerations:

  • key: "node-role.kubernetes.io/master"
    operator: "Equal"
    value: ""
    effect: "NoSchedule"

二、k8s强制删除Terminating状态的资源

kubectl delete pod [pod name] --force --grace-period=0 -n [namespace] pod

kubectl patch pv pv001 -p ‘{"metadata":{"finalizers":null}}‘ pv

kubectl patch pvc my-pvc -p ‘{"metadata":{"finalizers": []}}‘ --type=merge pvc

运行状态查看

nodeport 占用
kubectl get service -n kxyyq4 |grep NodePort
cpu占用
kubectl top pod -n kxyyq4
列出的cpu,比如700m就是7个完整的CPU。找到对应的rs调整他的cpu就好了。

命名空间设置资源限额
kubectl describe namespace kxyyq4

三、时区问题

时区问题其实是docker容器的问题,制作镜像的时候设置好的话是没有这种问题的。
如果忘记设置的话,只好在k8s部署pod的时候,设置环境变量或者挂载本地时区文件来解决。

apiVersion: v1
kind: Pod
metadata:
  name: busy-box-test
  namespace: default
spec:
  restartPolicy: OnFailure
  containers:
  - name: busy-box-test
    image: busybox
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: date-config
      mountPath: /etc/localtime
    command: ["sleep", "60000"]
  volumes:
  - name: date-config
    hostPath:
      path: /etc/localtime
















以上是关于k8s不常用设置-禁止master调度的主要内容,如果未能解决你的问题,请参考以下文章

k8s集群-node节点设置不可调度或者删除node节点

K8S常用命令介绍

k8s- 使用DaemonSet时,主节点没有运行Pod实例

Kubernetes(k8s)亲和性调度

k8s架构原理

k8s高可用方案系列---集群多master搭建