首页 > 其他分享 >K8s集群搭建问题

K8s集群搭建问题

时间:2023-04-05 19:24:43浏览次数:35  
标签:初始化 kubelet 报错 HOME 集群 docker K8s 节点 搭建

警告Cgroup Driver不一致

节点加入集群会警告 docker 和 kubelet 的 Cgroup Driver 不一致,但是暂未发现影响,如图:

image-20210914180557147

解决办法:修改 docker 的 Cgroup Driver 为 systemd

vim /etc/docker/daemon.json

加下面配置,注意在上一行配置后加逗号。

"exec-opts": ["native.cgroupdriver=systemd"]

image-20211130155551621

echo "重启Docker" > /dev/null
systemctl restart docker

用这个命令查看当前 Docker Cgroup 驱动

docker info | grep Cgroup

forward策略为drop

我不确定这个会不会引发集群问题,先记录下。

解决办法:就是修改 iptables forward 策略为 ACCEPT。可以在系统中直接改,但是重启后又会复原。可以通过修改docker配置达到永久生效的目的。

vim /lib/systemd/system/docker.service
# 在[Service]标签下加入如下参数
# ExecStartPost=/sbin/iptables -P FORWARD ACCEPT
echo "重新加载并重启" > /dev/null
systemctl daemon-reload
systemctl restart docker

用这个命令查看 iptables 策略

iptables -nL

在这里插入图片描述

重复 init/join 集群报错

  • 主节点初始化(init)失败,再次尝试报错

解决办法:在主节点执行重置操作。

echo "重置,询问时输入y回车" > /dev/null
kubeadm reset
  • 工作节点加入集群时出错了修改后再次加入报错;主节点删除了工作节点,工作节点再次加入报错等情况。如图:

image-20210914180458899

解决办法:在工作节点重置后再执行 Join 命令

echo "重置,询问时输入y回车" > /dev/null
kubeadm reset 

使用kubectl报错-1

重置集群(kubeadm reset)后,重新初始化(kubeadm init)集群,然后使用kubectl命令(如:kubectl get nodes)报错。

Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")

解决办法:删掉之前产生的配置文件,执行初始化后打印的脚本重新生成

echo "删除配置" > /dev/null
rm -rf $HOME/.kube

echo "重新生成" > /dev/null
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

其实删除配置这个在重置集群后控制台有提示。

image-20210927155143755

使用kubectl报错-2

使用kubectl命令(如:kubectl get nodes)报错,原因是没有执行初始化后打印的脚本生成配置。

error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable

解决办法:初始化后打印的脚本

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

主节点初始化报错

执行kubeadm init初始化的时候卡住,长时间后报错。

image-20211129173612543

  • 主机是云服务器

执行完上面的初始化脚本后会卡在 etcd 初始化的位置,因为 etcd 绑定端口的时候使用外网 IP,而云服务器外网 IP 并不是本机的网卡,而是网关分配的一个供外部访问的 IP,从而导致初始化进程一直重试绑定,长时间卡住后失败。

解决办法是在卡住时,另启一个命令行窗口修改初始化生成的 etcd.yaml 中的配置成示例图一样,进程会自动重试并初始化成功。

vim /etc/kubernetes/manifests/etcd.yaml

image-20210925173830217

  • 6443端口未开,比如云服务安全组入站规则没开放这个端口

查看kubelet日志(journalctl -xeu kubelet)会看到错误日志node "xxx" not found,把端口放开就好了。

image-20211129174340230

从节点Join失败

查看kubelet日志(journalctl -xeu kubelet)会看到错误日志,意思是kubelet的cgroup驱动和Docker的不一样。

"Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is different from docker cgroup driver: \"cgroupfs\""

image-20211130155015475

解决办法:修改 docker 的 Cgroup Driver 为 systemd,修改方式上文有提及。

标签:初始化,kubelet,报错,HOME,集群,docker,K8s,节点,搭建
From: https://www.cnblogs.com/shuiyao3/p/17290594.html

相关文章

  • 在Linux内网搭建K8s集群
    前言本文讲述在Linux内网搭建K8s集群详细步骤,解决搭建过程中的问题。脚本基本可以不修改直接使用。准备工作需要LinuxCentOS7.x两台及以上,本文用的7.6。主机要求有2个核心及以上。安装步骤多个节点可以并行操作,默认所有操作各节点都要执行,某些操作仅主/工作节点执行在标......
  • 46 openEuler搭建Nginx服务器-管理Nginx
    46openEuler搭建Nginx服务器-管理Nginx46.1概述通过systemctl工具,可以对nginx服务进行管理,包括启动、停止、重启服务,以及查看服务状态等。本节介绍nginx服务的管理操作。46.2前提条件为了能够使用nginx服务,请确保您的系统中已经安装nginx服务。若未安装,可参考安装进行安装......
  • 在Linux搭建Zookeeper集群
    前言本文讲述在多台Linux服务器搭建ZooKeeper集群的具体步骤,共4个节点(1主2从1观察者)。ZooKeeper使用的端口:【2181】对client提供服务;【3888】选举leader;【2888】集群内通讯。准备工作ZooKeeper需要1.7及以上版本的JDK,可以参考在Linux安装JDK。给系统配置hosts......
  • 在Linux搭建Kafka集群
    前言以kafka_2.13-2.8.0版本做示例,安装架构图如下所示,4台服务器,4个节点的Zookeeper集群(1主2从1观察)以及3个Kafka服务。准备工作准备多台服务器来搭建集群环境Kafka需要Zookeeper做分布式协调,所以得先准备好Zookeeper集群。可以参考在Linux搭建Zookeeper集群给系统配置host......
  • 在Linux部署Redis主从和哨兵集群实现高可用
    前言本文主要讲述在Linux系统中配置和部署Redis主从集群和哨兵,实现高可用和自动故障迁移。准备工作参考Redis单机部署安装3个Redis服务作一主二从,本文准备了6380(主)、6381(从)和6382(从)。参考Redis单机部署安装3个Redis服务作哨兵集群,本文准备了26380......
  • 在Linux部署Redis Cluster集群
    前言本文讲述在Linux系统部署RedisCluster实现数据分片的具体步骤。请参考Redis单机部署下载编译。RedisCluster是什么?RedisCluster是官方提供的一种用数据分片来实现横向扩容的解决方案,由一个或多个Redis服务组成一个无主集群。对Key使用哈希算法将数据分散......
  • Redis——(主从复制、哨兵模式、集群)的部署及搭建
    重点:主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。哨兵和集群都是在主从复制基础上实现高可用的。缺点:故障恢复无法自动化,写操作无法负载均衡,存储能力受到单机的限制。哨兵:在主从复制的基础上,哨兵......
  • 在Linux部署Etcd集群
    前言目前解决分布式系统下数据强一致性的主要算法理论是Paxos和Raft,偏向CAP定理一致性(Consistency)、可用性(Availability)、分区容错性(Partitiontolerance)中的CP。Raft在容错和性能方面和Paxos相当,不同之处在于它将问题分解成相对独立的子问题,逻辑较为清晰,更易于理解。关于Raft......
  • Lvim(Version: 1.2)环境搭建
    LunarVim开发环境搭建官方网站Prerequisites(Ubuntu20.04.4)Neovimwgethttps://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gzgit设置全局加速gitconfig--globalurl."https://gitclone.com/".insteadOfhttps://makepythonpips......
  • 让JVM感知K8s资源限制
    无感知导致的问题当我们在K8s中Deployments配置资源限制和预留的时候,比如设置最大内存为500M。但是宿主机的总内存为8G,这时候Pod启动后会超出内存限制,被Deployments杀掉。但为了维护设置的副本数量又创建新的,如此反复。原因是默认情况JVM默认最大堆空间为系统总内存的1/4,在容器......