从零开始搭建Kubernetes集群
如何从零开始部署一套自己的K8S 集群
·
以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在其它节点同样生效
更多推荐
已为社区贡献5条内容
所有评论(0)