kubeadm部署k8s
通过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
上一篇: jvirualvm 监控 jvm应用
下一篇: jvirualvm 监控 jvm应用