`

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

 

  1. 查询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
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics