zoukankan      html  css  js  c++  java
  • k8s常见问题汇总-持续更新

    一、k8s禁止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

    四、k8s时区问题

    时区问题其实是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
    

    五、rancher无法连接镜像库凭证

    rancher中使用私有镜像库主要分一下几个流程:

    1. 在服务器上登录harbor生成登录认证文件
    2. 在k8s上配置连接harbor的秘钥文件
    3. 在rancher镜像中引用

    从以上3点出发解决问题:

    1. 在集群的都每台节点上都要登陆一下harbor,在~/.docker/config.json文件中产生认证信息。
    2. 在k8s集群中生成秘钥文件
      kubectl create secret docker–registry —docker–server=<your–registry–server> —docker–username=<your–name> —docker–password=<your–pword> —docker–email=<your–email>。

    :所创建的私有镜像仓库密钥的名称;
    :为镜像仓库的服务器地址;
    :登录镜像仓库的用户名;
    :登录镜像仓库的密码;
    :用户的邮箱地址。
    注意secret的名称空间,在哪个名称空间部署应用就把secret建在哪个名称空间下

    3.在rancher发布的时候要引用完整的镜像地址

    如果是rancher导入的外部集群,还可能是因为rancher配置的镜像库凭证和K8S集群使用命令行创建的凭证不一致导致的。解决的办法就是在K8S集群上删除凭证,在rancher上再创建一次凭证。或者在镜像中使用imagePullSecrets指定镜像凭证

    六、在节点执行kubectl报错

    kbectl get nodes 提示the server doesn't have a resource type "nods"
    需要把master的/root/.kube/config 拷贝到该节点同样位置

    七、重装节点后,无法加入master

    Failed to connect to API Server "10.61.1.29:6443": token id "3d069l" is invalid for this cluster or it has expired. Use "kubeadm token create" on the master node to creating a new valid token
    这个问题一般是token过期了,执行kubeadm token create将生成的tocken放入jion命令:
    如:kubeadm join x.x.x.x:6443 --token 8fo1ol.5ffzezsgfrp7rmc1 --discovery-token-ca-cert-hash sha256:d626ee9be9d4fcbe8c2cce33225e04e3eb775b641ee95bfa9740f1a0113ed376

    八、点重新加入集群后,启动网络失败

    Failed create pod sandbox: rpc error: code = Unknown desc = NetworkPlugin cni failed to set up pod "busybox-test-bl7w2_kxyyq4" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.9.1/24
    处理办法重置node节点,重新加入集群

    kubeadm reset
    systemctl stop kubelet
    systemctl stop docker
    rm -rf /var/lib/cni/
    rm -rf /var/lib/kubelet/*
    rm -rf /etc/cni/
    ifconfig cni0 down
    ifconfig flannel.1 down
    ifconfig docker0 down
    ip link delete cni0
    ip link delete flannel.1
    ##重启kubelet
    systemctl restart kubelet
    ##重启docker
    systemctl restart docker
    
  • 相关阅读:
    LeetCode-20.Valid Parentheses
    LeetCode-2. Add Two Numbers
    LeetCode-1. Two Sum
    LeetCode Top100 Liked Questions
    位运算
    sublime中文乱码解决办法
    jQuery 参考手册
    jQuery 参考手册
    jQuery 参考手册
    《锋利的Jquery第二版》读书笔记 第三章
  • 原文地址:https://www.cnblogs.com/zhaobowen/p/13293195.html
Copyright © 2011-2022 走看看