以Centos系统为例,以下操作步骤5在主节点操作,步骤1-4需要在所有节点进行

1 升级系统内核

# 更新yum源
yum -y update
# 获取源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
安装
yum --enablerepo=elrepo-kernel install -y kernel-lt 

# 离线安装
#下载RPM包https://elrepo.org/linux/kernel/el7/x86_64/RPMS/ #选择自己想要的版本下载对应的
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-4.4.206-1.el7.elrepo.x86_64.rpm
# 安装
yum localinstall -y kernel-lt-4.4.206-1.el7.elrepo.x86_64.rpm

# 查看全部的系统内核
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
# 设置开机从新内核启动
grub2-set-default 0
# 生成grub配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启使配置有效
reboot
# 查看正在使用的内核
uname -r

2 安装kube系列程序

使用本地软件包管理软件

$ 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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装kubelet kubeadm kubectl

#版本可以根据自己选择
yum install -y kubelet-1.18.2 kubeadm-1.18.2 kubectl-1.18.2

#设置kubelet开机启动
systemctl enable kubelet && systemctl start kubelet

3 安装docker

使用国内的阿里镜像安装

$sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  
$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装最新版本的 Docker Engine-Community 和 containerd

$ sudo yum install docker-ce docker-ce-cli containerd.io
根据自己的需要(如自己的镜像仓库地址)更新docker的配置文件/etc/docker/daemon.json,如果没有可以不必要刻意设置
# 使docker配置生效
systemctl daemon-reload
systemctl restart docker

# 开机启动docker
systemctl enable docker

4 linux系统配置更改

# 1、设置路由策略
lsmod | grep br_netfilter
# 2、使桥接流量对iptables可见
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

# 3、关闭swap
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
# 4、关闭防火墙
sudo systemctl stop firewalld.service   #停止firewall
sudo systemctl disable firewalld.service #禁止firewall开机启动
sudo firewall-cmd --state             #查看防火墙状态
# 5、禁用selinux
sudo setenforce 0
sudo vi /etc/selinux/config
#SELINUX修改为disabled
SELINUX=disabled

5 初始化集群

初始化集群时要注意所使用的cni插件是否对参数有要求

[root@master ~]# kubeadm init --kubernetes-version=1.18.2 \
--apiserver-advertise-address=192.168.253.11 \
--ignore-preflight-errors=all \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

apiserver地址就是master的地址,最后两个参数是service和pod的cidr
根据kubeadm init之后提示的执行如下命令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6 加入集群

集群初始化后会给出一个kubeadm join的命令,如果不是刚刚初始化的集群,可以使用kubeadm token create --print-join-command生成加入集群的命令

加入集群之后可以使用 kubectl get node来查看集群中的节点

将master节点的/root/.kube/config文件拷贝至其他node可以让kubectl在其它节点同样生效

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐