部署安装
centos使用Docker容器方式安装各类软件包
docker部署各种服务
docker安装elasticsearch7.6.2
docker方式安装onlyOffice
使用docker安装部署kibana
Docker常用运维命令
使用docker方式安装mm-wiki,助力技术团队文档开发
docker方式部署springboot应用
Harbor 入门与上手
修改或增加已运行的 Docker 容器端口映射
docker安装mysql
docker方式安装gitlab
Docker 安装MQTT服务 mosquitto2.0版本
centos编译方式安装
centos通过编译的方式安装python3.8
centos绿色安装包
Centos7安装NodeJs
centos7环境下部署yapi v1.9.2版本
centos7.9安装nacos2.2.3
Centos下安装Node14
centos中安装go
centos通过yum方式安装的软件包
centos 安装supervior
centos 安装 jenkins 2.452.1最新版本
centos7安装docker-20.10.9版本
数据库
在centos7下安装PostgreSQL10
mysql 主从搭建
windows安装oracle11g的一些后续注意事项
centos7.9安装oracle11g
镜像加速
nginx
在两台centos上面安装nginx+keepalived实现主备
linux常用命令
jenkins部署前后端服务几种常见场景配置说明
GIT
K8S
kubeadm init在初始化master节点的遇到的问题梳理
K8S部署+kuboard可视化界面完整说明
k8s+kuboard+harbor部署springboot的一些说明
其他
centos7使用miniconda方式安装飞浆OCR
frp内网穿透
java全平台安装
本文档使用 MrDoc 发布
-
+
首页
kubeadm init在初始化master节点的遇到的问题梳理
kubernetes在初始化master节点的时候,一条kubeadm init命令好多个坑。 我这里是要部署三个节点的kubernetes cluster,每个节点都提前安装好docker、kubelet、kubeadm、kubectl centos7安装docker可以参考这篇文章:https://www.cnblogs.com/yufeng218/p/8370670.html 然后选择其中的master节点,执行kubeadm init命令: kubeadm init --apiserver-advertise-address 10.168.1.113 --pod-network-cidr=10.224.0.0/16 执行后发现第一个问题:kubeadm加载的资源 都被墙了,,,所以请求全部都超时。 执行的时候加上 阿里云镜像的参数。 kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address 10.168.1.113 --pod-network-cidr=10.224.0.0/16 继续执行,发现问题二,报错如下: ~~~ Unfortunately, an error has occurred: timed out waiting for the condition This error is likely caused by: - The kubelet is not running - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled) If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands: - 'systemctl status kubelet' - 'journalctl -xeu kubelet' Additionally, a control plane component may have crashed or exited when started by the container runtime. To troubleshoot, list all containers using your preferred container runtimes CLI. Here is one example how you may list all Kubernetes containers running in docker: - 'docker ps -a | grep kube | grep -v pause' Once you have found the failing container, you can inspect its logs with: - 'docker logs CONTAINERID' ~~~ error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster 如果只看上面的报错的话,是不知道问题所在的。。。具体的原因使用下面的命令查看日志: 使用 tail /var/log/messages 命令进一步查看具体原因: 在日志里找到了如下的报错:"Failed to run kubelet" err="failed to run Kubelet: running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false 大概分析了一下,就是系统的swap要关闭。 运行cat /proc/swaps 检查果然Swap没有被关闭。 关闭的命令发下: ~~~ # 关闭Swap,机器重启后不生效 swapoff -a # 修改/etc/fstab永久关闭Swap cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S') # Redhat sed -i "s/\/dev\/mapper\/rhel-swap/\#\/dev\/mapper\/rhel-swap/g" /etc/fstab # CentOS sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab # 修改后重新挂载全部挂载点 mount -a # 查看Swap free -m cat /proc/swaps ~~~ 在Kubernetes集群master和nodes上禁用Swap后,运行下面命令重启Kubelet: ~~~ systemctl daemon-reload systemctl restart kubelet ~~~ 再运行 kubectl get pods --all-namespaces 检查Pod运行正常。 这里提示一下,每次执行kubeadm init之前,都要执行一下 rm -rf /etc/kubernetes/manifests ,不然会报错一个酸味文件已经存在的错误提示信息。 解决上面的问题后,继续执行kubeadm init命令,还是报错,,再次使用 tail /var/log/messages 查看具体的错误信息。 看到了报错信息如下:"Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is different from docker cgroup driver: \"cgroupfs\"" kubernetes官方推荐docker等使用systemd作为cgroupdriver,上面这句话的意思 就是kubelet 使用了systemd的驱动,但是docker 使用了cgroupfs的驱动 。 解决方法: ~~~ mkdir /etc/docker cat > /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "data-root": "/data/docker" } EOF ~~~ 相当于创建了一个 docker的加载配置文件/etc/docker/daemon.json。 通过命令docker info可以看到当前的driver是哪一种。 新建完上面的配置文件后,然后使用以下命令进行重启: ~~~ # 重启docker systemctl daemon-reload systemctl restart docker ~~~ 解决上面的问题后,继续执行kubeadm init命令,报错,提示 10250端口被占用。 使用 kubeadm reset 进行重置。 再次执行kubeadm init命令。当看到下面这些信息后 ~~~ To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as r kubeadm join 10.168.1.113:6443 --token 1sbwhr.x7kbbfaq3003y7us \ --discovery-token-ca-cert-hash sha256:f74f5b79bc3afd2d412e88c1ae2ada817f16 ~~~ 终于成功了。。。 如何关闭防火墙? 首先查看防火墙的状态 ~~~ systemctl status firewalld.service ~~~ 然后执行命令进行关闭 ~~~ systemctl stop firewalld service ~~~ 输入命令: ~~~ systemctl disable firewalld.service,开机禁止防火墙服务器 systemctl enable firewalld.service,开机启动防火墙服务器 ~~~ 修改主机名: ~~~ hostnamectl set-hostname xxxxxx echo xxxxx > /etc/hostname ~~~ 设置主机host: ~~~ cat >> /etc/hosts << EOF 10.168.1.113 master 10.168.1.181 node1 10.168.1.110 node2 EOF ~~~ 设置环境变量,否则 kubectl get pods --all-namespaces / kubectl get nodes 命令用不了。 ~~~ [root@master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile [root@master ~]# source /etc/profile ~~~ 在从节点上执行kubectl 后报以下错误? The connection to the server localhost:8080 was refused - did you specify the right host or port? 解决方法: 将主节点(master节点)中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下 然后执行上面的source /etc/profile 两行命令。 部署flannel 网络,主节点init后,从节点join后,都要执行下面这个命令,才能保持都是 running的状态。 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 后面这个kube-flannel.yml因为墙的原因,,加载不了。所以自己想办法给下载下来 或者点击这里进行下载,然后传到服务器上。点击打开链接 后记: 接下来进行node节点join到master的时候,两台节点的机器,都要满足以下硬性条件: 关闭防火墙 关闭swap cgroupdriver 要保持一致 其他一些命令: 每次master 初始化后,最底部会显示 token等信息,如果关掉了,可以通过 kubeadm token list查看 如果提示鉴权失败,可以在master上面重新生成: 生成token : kubeadm token create 这个是生成sha256: ~~~ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' ~~~
superadmin
2023年1月11日 20:44
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码