• Ubuntu系统的k8s常见的错误和解决的问题


    K8s配置的时候出现的常见问题

    Q1: master节点kubectl get nodes 出现的错误

    在这里插入图片描述
    或者
    在这里插入图片描述

    解决方法:

    
    cat <<EOF >> /root/.bashrc
    export KUBECONFIG=/etc/kubernetes/admin.conf
    EOF
    
    source /root/.bashrc
    

    重新执行 kubectl get nodes
    在这里插入图片描述

    记得需要查看一下自己的hosts文件
    查看自己的 ip, 使用 ifconfig 进行替换相关的地址和自己的主机名
    在这里插入图片描述

    Q2 master节点拉取镜像失败

    修改镜像地址为阿里的,注意每个安装有 kubelet 的节点都需要修改(master节点和worker节点都需要)

    # 生成 config.toml 文件,我在解决第3个问题的时候删除了
    containerd config default > /etc/containerd/config.toml
    
    # 按照官网CRI部分修改如下两个配置
    vim /etc/containerd/config.toml
    
    [plugins."io.containerd.grpc.v1.cri"]
       # sandbox_image = "registry.k8s.io/pause:3.6"
       sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
        SystemdCgroup = true
    
    # 然后:wq保存一下
    
    # 记得需要重启一下
    systemctl restart containerd
    
    # 修改crictl.yaml的CRI
    cat <<EOF | sudo tee /etc/crictl.yaml
    runtime-endpoint: unix:///run/containerd/containerd.sock
    EOF
    

    需要修改的地方截图如下:
    在这里插入图片描述
    在这里插入图片描述

    Q3 master节点 kubeadm reset 错误

    在这里插入图片描述
    解决办法

    # 删除/etc/cni/net.d目录
    rm /etc/cni/net.d
    # 重置ipvsadm表
    ipvsadm --clear
    
    # 检查$HOME/.kube/config文件的内容
    

    Q4 master节点 kubectl init 拉去镜像失败

    在这里插入图片描述

    解决办法:

    # 指定阿里云镜像去拉去 --kubernetes-version=版本号
    kubeadm init --kubernetes-version=v1.28.2 ​--image-repository=registry.aliyuncs.com/google_containers​
    

    Q5 master节点没有证书密钥

    在这里插入图片描述

    解决办法:
    Ubuntu安装golang-cfssl

    sudo apt-get update
    sudo apt-get install -y golang-cfssl
    
    # 如果没有go环境需要执行下面命令先安装 golang
    sudo apt-get install -y golang
    

    创建一共ca-config文件:vim ca-config.json

    {
      "signing": {
        "default": {
          "expiry": "8760h"
        },
        "profiles": {
          "kubernetes": {
            "usages": [
              "signing",
              "key encipherment",
              "server auth",
              "client auth"
            ],
            "expiry": "8760h"
          }
        }
      }
    }
    

    创建CA证书签名请求文件ca-csr.json

    {
      "CN": "Kubernetes",
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "L": "Beijing",
          "O": "k8s",
          "OU": "System"
        }
      ]
    }
    
    

    生成证书密钥

    cfssl gencert -initca ca-csr.json | cfssljson -bare ca
    
    

    创建一个名为admin-csr.json的文件

    {
      "CN": "admin",
      "hosts": [],
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "L": "Beijing",
          "O": "system:masters",
          "OU": "Kubernetes The Hard Way"
        }
      ]
    }
    
    

    然后,使用cfssl生成客户端证书和私钥

    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
    

    最后拷贝文件到 /etc/kubernetes/pki 目录中

    sudo cp admin.pem /etc/kubernetes/pki/admin.crt
    sudo cp admin-key.pem /etc/kubernetes/pki/admin.key
    

    最后执行kubectl get nodes 就可以正常查看自己的k8s集群了

    Q6 kubeadm init 创建失败的问题

    在这里插入图片描述

    解决办法:

    # 创建一共config文件
    vim config.yaml
    
    export KUBECONFIG=config.yaml
    
    kubeadm init --kubernetes-version=v1.28.2 --image-repository=registry.aliyuncs.com/google_containers
    
    

    config.yaml文件

    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /etc/kubernetes/pki/ca.crt
        server: https://-ip>:6443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: kubernetes-admin
      name: kubernetes-admin@kubernetes
    current-context: kubernetes-admin@kubernetes
    kind: Config
    preferences: {}
    users:
    - name: kubernetes-admin
      user:
        client-certificate: /etc/kubernetes/pki/admin.crt
        client-key: /etc/kubernetes/pki/admin.key
    

    Q7 master没有ipvsadm

    在这里插入图片描述
    解决办法:

    # 安装
    apt install -y ipset ipvsadm
    
    # 随后执行
     cat > /etc/modules-load.d/kubernetes.conf << EOF
    # /etc/modules-load.d/kubernetes.conf
    # Linux 网桥支持
    br_netfilter
    # IPVS 加载均衡器
    ip_vs
    ip_vs_rr
    ip_vs_wrr
    ip_vs_sh
    # IPv4 连接跟踪
    nf_conntrack_ipv4
    # IP 表规则
    ip_tables
    EOF
    

    添加权限

    chmod a+x /etc/modules-load.d/kubernetes.conf
    
  • 相关阅读:
    基于Web的个人网页响应式页面设计与实现 HTML+CSS+JavaScript(web前端网页制作课作业)
    Kafka系列之:Kafka Connect Configs
    java基础巩固20
    LiveGBS流媒体平台GB/T28181功能-国标流媒体服务同时兼容内网收流外网收流多网段设备收流
    Spring+SpringMVC+Jsp实现新冠肺炎疫苗接种管理系统
    复合函数的结合律证明
    罗技g402鼠标宏设置教程
    【23真题】易!题源全部定位!带讲解!
    周赛366(记忆化搜索)
    【数据结构(四)】栈(1)
  • 原文地址:https://blog.csdn.net/weixin_47024018/article/details/139412801