通过kubeadm init初始化master
名称 | ip |
k8s-master | 192.168.2.131 |
k8s-node01 | 192.168.2.132 |
k8s-node02 | 192.168.2.133 |
linux内核版本(所有节点)
确保服务器版本linux内核支持k8s安装 , 我使用的是linux5.12,如果版本不支持kubeadm init 执行的时候会报错
报错CONFIG_CGROUP_PIDS: not set;CGROUPS_PIDS: missing
- 查询linux版本
uname -a
如果版本太低,需要升级linux内核版本(所有节点)
#1、导入key rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #2、安装 elrepo 的yum源 rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm #3. 安装内核,在yum的elrepo源中,有最新版本内核。直接yum安装即可。 yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel –y #4、查看当前可用内核版本: awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg #5、选择最新内核版本,0代表查看当前可用内核版本列表的左侧索引号 grub2-set-default 0 #6、生成grub文件 grub2-mkconfig -o /boot/grub2/grub.cfg #7、重启系统 reboot
设置hostname(所有节点)
#1、必须跑 hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node01 hostnamectl set-hostname k8s-node02 #2、必须跑 echo k8s-master 192.168.2.231 >> /etc/hosts && echo k8s-node01 192.168.2.232 >> /etc/hosts && echo k8s-node02 192.168.2.233 >> /etc/hosts
以上代码第一步没跑会出问题,node名称不正常,后面kubeadm新增节点的时候也会节点名称不正常
关闭防火墙(所有节点)
systemctl stop firewalld systemctl disable firewalld systemctl status firewalld
关闭selinux(所有节点)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久 需重启 setenforce 0 # 临时
关闭swap(所有节点)
swapoff -a sed -i 's/^[^#].*swap/#&/' /etc/fstab systemctl daemon-reload
若要启用swap设备,则需要在集群初始化时添加--ignore-preflight-errors=swap,意义为忽略因swap设备导致的报错
关闭ipv6(所有节点)
echo net.ipv6.conf.all.disable_ipv6=1 >> /etc/sysctl.conf echo NETWORKING_IPV6=no >> /etc/sysconfig/network sed -i 's/IPV6INIT=yes/IPV6INIT=no/g' /etc/sysconfig/network-scripts/ifcfg-ens33 sysctl -p ip a # 查看ipv6是否关闭
将桥接的IPv4流量传递到iptables(所有节点)
cat >/etc/sysctl.d/kubernetes.conf << EOF net.bridge.bridge-nf-call-ip6tables =1 net.bridge.bridge-nf-call-iptables =1 EOF sysctl --system # 生效
同步时间(所有节点)
yum install -y ntpdate ntpdate time.windows.com sudo rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
安装docker(所有节点)
#1、下载源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo #2、安装docker yum -y install docker-ce-18.06.1.ce-3.el7 #3、启动docker systemctl enable docker && systemctl start docker #4、查看docker版本,看看有没有装成功 docker --version
修改docker下载地址
vim /etc/docker/daemon.json { "insecure-registries": ["192.168.2.233"], "exec-opts":["native.cgroupdriver=cgroupfs"], "registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"] }
不能有中文,不然docker重启报错。
重启进程
systemctl daemon-reload systemctl restart docker
安装k8s(所有节点)
#1、指定源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF #2、安装相关组件 yum install kubeadm.x86_64 kubectl.x86_64 kubelet.x86_64 -y #3、启动kubelet服务 systemctl enable kubelet.service systemctl start kubelet.service
k8s集群初始化(master节点执行)
kubeadm init --apiserver-advertise-address=192.168.2.231 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.21.1 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
如果不能下载docker镜像,报错如:
failed to pull image docker.mirrors.ustc.edu.cn/google_containers/coredns/coredns:v1.8.0: output: Error response from daemon: manifest for docker.mirrors.ustc.edu.cn/google_containers/coredns/coredns:v1.8.0 not found,则需要docker pull 镜像
docker pull coredns/coredns:v1.8.3 docker tag coredns/coredns:v1.8.0 gotok8s/coredns:v1.8.0 ..... kubeadm init --apiserver-advertise-address=192.168.2.231 --image-repository gotok8s --kubernetes-version v1.21.1 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
调整
注释以下两个文件的port=0的配置
/etc/kubernetes/manifests/kube-controller-manager.yaml
/etc/kubernetes/manifests/kube-scheduler.yaml
node加入集群
在master节点执行kubeadm token create --print-join-command ,获取join脚本
在node节点执行
kubeadm join 192.168.2.231:6443 --token 2b8ic3.05a95b6sdkhosyl3 --discovery-token-ca-cert-hash sha256:fd7ba1fdbd4e468feec1bf3918beb7b22dfb1fda43072d174a00e3c907e25e5a
失败重装
如果安装失败,执行命令:systemctl status kubelet 出现错误日志:Container not found in pod's containers ,把配置删掉再来一遍
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 systemctl start docker
相关推荐
生产环境 kubeadm部署k8s 包括master高可用
kubeadm部署k8s集群.md
kubeadm部署k8s集群(1.20.11)
centos7.9使用kubeadm部署k8s v1.30.3
Kubernetes,简称K8s,是Google开源的一种容器编排系统,用于自动化容器化的应用程序部署、扩展和管理。本文将深入探讨使用kubeadm工具在本地环境部署Kubernetes集群1.13.0版本的过程,这是一项对于运维人员至关重要...
使用kubeadm快速部署一个K8s集群,快速搭建k8s集群手顺
kubeadm部署k8s集群(1.9.2)-附件资源
在Centos中利用kubeadm工具安装和部署一个原生的kubernetes集群。
CentOS7+Kubeadm+K8S集群部署学习实践手册
使用kubeadm工具快速部署kubernetes集群,文中详细描述1master+2node节点的kubernetes集群部署。包含部署后进行dashboard以及flanel部署的yml文件。所有内容在centos7.3上部署成功且使用实际项目测试成功。
kubeadm部署高可用K8S集群v1.21 Kubernetes(K8S)是一种容器编排系统,可以自动化容器的部署、扩展和管理。Kubeadm是Kubernetes的自动化部署工具,可以快速部署高可用性Kubernetes集群。下面是kubeadm部署高可用K8...
kubeadm部署高可用k8s集群,haproxy+keepalived-版本k8s1.20.4,详细笔记总结文档
k8s离线文件包 Ubuntu 使用Kubeadm 离线安装k8s 参考连接 https://blog.csdn.net/u010952056/article/details/127276191?spm=1001.2014.3001.5501
此文档包含centos7系统部署k8s 1.16.2 版本的详细步骤,从初始化系统到部署成功,在不需要了解K8S原理基础下能部署成功
kubeadm与二进制构建k8s的区别: 1.安装方式不同:使用 kubeadm 创建的 Kubernetes 集群是使用预先打包好的二进制文件安装的,而使用二进制安装则需要手动下载和安装二进制文件。 2.部署步骤不同:使用 kubeadm ...
Kubernetes(简称k8s)是Google开源的一种容器编排系统,用于自动化容器化的应用程序部署、扩展和管理。kubeadm是Kubernetes提供的一种简单、可靠的方式来在集群中初始化节点和搭建控制平面,使得部署Kubernetes变得...
初始化kubeadm-ansible 准备和构建在kubeadm init上运行kubeadm init所需的主节点/工作节点的剧本firewalld:已启用CNI 以使用 Calico 或 Flannel 为前提(firewalld 设置是自动的) 设置为库存以禁用 firewalld参考...
3 使用Kubeadm部署K8s集群 4 使用KinD部署K8s集群 5 Containerlab与KinD结合使用 二、网络基础: 6 TCPIP协议栈 7 IP与MAC精讲 8 VETH PAIR原理 9 HOST-GW Demo 10 CNI网络模型 11 CNI工作原理 三、CiliumCNI: 12 ...
Kubeadm部署K8S单Master架构