k8s 添加 node
当微服务不断增加时,资源不够用,需要增加新的node
系统:centos 8
修改hostname
hostnamectl set-hostname xxxx
重启生效
安装必要的软件
yum -y install wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip libaio-devel wget vim ncurses-devel autoconf automake zlib-devel epel-release lrzsz openssh-server socat ipvsadm conntrack bind-utils epel-release libffi-devel libaio-devel libxml2-devel cmake device-mapper-persistent-data lvm2 yum-utils
其中yum-utils
可以方便地管理软件源
关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
yum install iptables-services -y
iptables -F && service iptables save
service iptables stop && systemctl disable iptables
关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
关闭swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
设置系统参数【所有节点】
(1)针对于linux7以上,设置允许路由转发,不对bridge的数据进行处理
创建 /etc/sysctl.d/k8s.conf 文件
vim /etc/sysctl.d/k8s.conf
加入下面内容:
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
(2)挂载br_nebrtfilter
modprobe br_netfilter
(3)生效配置文件
sysctl -p /etc/sysctl.d/k8s.conf
sysctl命令:用于运行时配置内核参数
查看是否生成相关文件
ls /proc/sys/net/bridge
(4)资源配置文件
vim /etc/security/limits.conf 是 Linux 资源使用配置文件,用来限制用户对系统资源的使用,末尾加入
echo “* soft nofile 65536” >> /etc/security/limits.conf
echo “* hard nofile 65536” >> /etc/security/limits.conf
echo “* soft nproc 65536” >> /etc/security/limits.conf
echo “* hard nproc 65536” >> /etc/security/limits.conf
echo “* soft memlock unlimited” >> /etc/security/limits.conf
echo “* hard memlock unlimited” >> /etc/security/limits.conf
添加软件源
配置安装k8s需要的yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF
配置docker yum源,如果你的很慢,可以选择下方的阿里云docker yum源
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
清理缓存
yum clean all
yum makecache fast
安装docker
由于CentOS 8 默认使用podman代替Docker,执行
centos8 先运行:
yum erase podman buildah
yum install -y docker-cesystemctl enable docker && systemctl start dockersystemctl status docker
注意查看docker的状态,是否有异常信息
如提示:
Centos /var/log/messages Unknown lvalue ‘TasksMax’ in section ‘Service’
解决方案
#yum install systemd-* -y
#systemctl status docker.service验证方案
# systemctl restart docker.service
# systemctl status docker.service
“Not using native diff for overlay2, this may cause degraded performance for building images: opaque flag erroneously copied up, consider update to kernel 4.8 or later to fix” storage-driver=overlay2
表示要升级内核
修改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"]
}
EOF
重启docker
systemctl daemon-reload && systemctl restart docker
安装k8s
开启k8s 网络桥接相关内核配置
设置网桥包经IPTables,core文件生成路径,配置永久生效
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 >/proc/sys/net/bridge/bridge-nf-call-ip6tablescat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOFsysctl -p
安装kubeadm,kubelet和kubectl
yum install kubeadm-1.18.0 kubelet-1.18.0 kubectl-1.18.0 -y systemctl enable kubelet && systemctl start kubelet
配置k8s服务启动顺序
cat /etc/systemd/system/multi-user.target.wants/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target
After=containerd.service
After=docker.service
添加了最后两行
加入k8s集群
在master节点运行以下命令,查询加入集群的指令:
kubeadm token create --print-join-command
输出类似下面:
kubeadm join 192.168.1.199:6443 --token 7dwluq.x6nypje7h55rnrhl \--discovery-token-ca-cert-hash sha256:fa75619ab0bb6273126350a9dbda9aa6c89828c2c4650299fe1647ab510a7e6c
在新节点运行上面的命令即可。
node提示:
untime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
表示插件kube-flannel未安装成功,通过是镜像下载过慢,如果手工下载:
docker pull quay.io/coreos/flannel:v0.12.0-amd64
配置节点保留资源
在节点的 /var/lib/kubelet/config.yaml 加入下列內容:
systemReserved:memory: 500Micpu: 250m
kubeReserved:memory: 500Micpu: 500m
evictionHard:memory.available: 200Minodefs.available: 20Gi
重启kubelet载入新设定
sudo systemctl restart kubelet
常用命令
删除节点
(1)卸载节点(drain 翻译排出,此时卸载节点,但是没有删除)
kubectl drain < node name > --delete-local-data --force --ignore-daemonsets
(2)删除节点
kubectl delete node < node name >
(3)清空init配置,需要删除的节点上执行
kubeadm reset
要重新加入再次执行kubeadm join
命令即可。
批量删除失败pod
kubectl get pods -n dev | grep OutOfmemory | cut -d' ' -f 1 | xargs kubectl delete pod -n dev
删除所有因内存不足失败的pod
k8s 添加 node相关推荐
- zabbix node.js mysql_Zabbix添加Node.js监控的方法
目前网上已有 pm2-zabbix 工具可以实现Zabbix对Node.js的监控报警,Github地址. 特征: 自动发现通过PM2管理的Node.js进程. 报告Nodes.js进程状态.CPU占 ...
- master节点重置后添加node报错_企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)...
相关文章 企业实战(23)基于Docker平台部署Jenkins中国定制版(1) 添加node节点前配置 在这里插入图片描述 在这里插入图片描述 开始添加node节点 在这里插入图片描述 在这里插入 ...
- PIBOT移植ROS2记录(2)-添加Node与cmd_vel
前文添加了简单的测试保证编译通过,本文将开始移植实现一个控制下发 1. base_driver的移植 首先把base_driver.cpp添加到pibot_driver中编译 diff --git a ...
- k8s对node添加Label
参考 在某些特殊情况下,需要将某些服务固定在一台宿主机上, k8s可以使用label给node节点打上标签来满足这种需求. Label添加删除和修改 添加label语法 kubectl label n ...
- master节点重置后添加node报错_超强教程!在树莓派上构建多节点K8S集群!
在很长一段时间里,我对于在树莓派上搭建Kubernetes集群极为感兴趣.在网络上找到一些教程并且跟着实操,我已经能够将Kubernetes安装在树莓派上,并在三个Pi集群中工作.然而,在master ...
- k8s入坑之报错(11)添加node节点报错:error execution phase preflight: [preflight] Some fatal errors occurred:...
参考文档:wangzy-Zj-Kubernetes 加入主节点报错 报错信息: [root@localhost ~]# kubeadm join 192.168.1.112:6443 --token ...
- 【Vegas原创】k8s添加新master或node
Master 1,在master上生成新的token [root@it-1c2d ~]# kubeadm token create --print-join-command kubeadm join ...
- k8s添加和更改node的roles
1.查看集群各node的roles,为none 2.为node打label,改变node的roles kubectl --kubeconfig=/etc/kubernetes/kubeconfig l ...
- Pod资源管理(pod容器分类,k8s添加harbor私库,上传下载私库)
Pod资源管理 了解pod Pod容器分类: 1:infrastructure container 基础容器:维护整个Pod网络空间 2:initcontainers 初始化容器 3:containe ...
最新文章
- Codeforces1600数学[CodeForces - 958E1[平面几何+暴力]CodeForces - 888D [组合数+错排问题]]
- Win11推送加速!
- bgb邻居关系建立模型_知识图谱上的双塔召回:阿里的IntentGC模型
- 机器人学 —— 机器人感知(Mapping)
- 软件工程(2018)第3次团队作业
- ucc编译器(语义分析)
- linux 文件类型 时间戳 ls bash特性四 文件查看命令 cp move echo
- SaltStact自动化运维工具03
- IIS下安装php5.3
- [转载] 使用hexo+github搭建免费个人博客详细教程
- 从傅里叶变换的角度谈宿命论
- 什么蓝牙耳机颜值高音质好?颜值高音质好的蓝牙耳机推荐
- 关于ZETag云标签你了解多少?
- 三菱PLC梯形图入门操作指令
- 惠州市政企信息化(互联网)市场调研报告
- java markdown转word_Markdown 格式如何转换成 Word?
- pikachu SQL注入 (皮卡丘漏洞平台通关系列)
- mysql查询专业术语,英文术语MySQL查询
- JS逆向必会基础案例 | 百度翻译参数破解
- AndroidStudio近场通信
热门文章
- 在一线城市,如果你想这座城市买房,建议你要趁早,不要拖延
- linux网卡灯不亮怎么处理,电脑网卡灯不亮怎么办 电脑网卡灯不亮解决方法介绍【详解】...
- 音像协呼吁保护音乐版权:短视频平台成为侵权重灾区
- 简历再也不愁没有项目了,一举拿下软件测试实战项目
- http://www.91python.com
- OPENGL学习项目--立体正方形的实时三维模型
- 赚钱的A面B面,有钱人跟我们想的根本不一样
- 【JVM】JVM03(图解垃圾回收机制)下
- 苹果开发者账号的最新申请流程以及APP上架测试流程
- PS基础-通道、蒙版