centos环境下搭建k8s
centos环境下搭建k8s
最近在学习k8s,并且尝试在自己的服务器上搭建k8s,中间遇到不少坑,重装系统N次,后面成功搭建出来,将这个过程记录下来,方便以后查看
建议操作前先将master跟node节点内核更新到最新,我是更新后再操作,大家可以参考这一篇教程Centos更新内核,master节点跟node都是Centos7,内核都是5.15。
一、基本环境配置
以下这些操作master节点跟node节点都是需要操作的步骤。
1、关闭防火墙
systemctl stop firewalld systemctl disable firewalld
2、关闭selinux
setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
3、修改主机名
我们根据master、node节点修改主机名
#master主机 hostnamectl set-hostname k8s-master #node主机 hostnamectl set-hostname k8s-node1
修改完之后重启服务器进行生效
reboot
4、关闭 swap
我们编辑 /etc/fstab文件,注释掉swap这一行
vi /etc/fstab
或者临时关闭
swapoff -a
检查是否生效
free -m
5、修改hosts
添加主机名与 IP 对应的关系,/etc/hosts 添加如下内容
vi /etc/hosts 95.214.113.168 k8s-master 45.136.235.229 k8s-node1
6、允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
重启配置
sysctl --system
7、安装docker
建议按照指定版本安装,后面不知道出现什么奇奇怪怪的问题
先卸载旧的 docker
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
安装组件
yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
添加 docker 安装源
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
如果服务器是国内的,建议docker安装源切换成这个比较快
yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看docker可安装列表
yum list docker-ce --showduplicates | sort -r
安装 docker
yum install -y containerd.io-1.2.10 docker-ce-19.03.4 docker-ce-cli-19.03.4
安装成功后,查看 docker 版本
docker --version
修改docker配置
mkdir -p /etc/docker vi /etc/docker/daemon.json
内容为以下
{ "exec-opts": ["native.cgroupdriver=systemd"] }
设置开机启动
systemctl enable docker systemctl start docker
查看docker信息
docker info | grep Driver
9、时间同步
由于我的master节点服务器是美国服务器,node节点是美国服务器,但是有时机器是不同地区,时间需要同步,我直接将
master、node节点的服务器时间都同步成国内时间,这一步大家根据自身情况进行修改。
yum install -y ntp systemctl enable ntpd systemctl start ntpd timedatectl set-timezone Asia/Shanghai timedatectl set-ntp yes ntpq -p
二、配置安装k8s
以下这些操作master节点跟node节点都是需要操作的步骤,建议按照教程指定版本安装,我试过最高版本安装,出现奇奇
怪怪的问题。
1、修改Kubernetes yum源配置
修改/etc/yum.repos.d/kubernetes.repo,这里我是按照官网的教程来写
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
2、安装k8s
所有节点安装kubeadm、kubectl、kubelet
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3 --disableexcludes=kubernetes
3、设置 k8s 开机启动
systemctl enable kubelet
4、启动 k8s 后台 daemon
systemctl start kubelet
三、master 节点操作
以下操作只在 master 节点运行,如果操作失败,可以通过以下命令来清理环境重新安装
rm -rf $HOME/.kube kubeadm reset
1、部署 Kubernetes Master
如果不知道kubeadm版本号多少,可以通过以下命令查看
kubeadm version
初始化启动Kubernetes
kubeadm init \ --apiserver-advertise-address=95.214.113.168 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.17.3 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16 \ --ignore-preflight-errors=all
# 说明 --apiserver-advertise-address 集群通告地址,这里我选的是当前master节点的IP --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址 --kubernetes-version K8s版本,与上面安装的一致 --service-cidr 集群内部虚拟网络,Pod统一访问入口 --pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致
这一步如果报错可以通过以下命令后重置
rm -rf $HOME/.kube kubeadm reset
安装后需要将这一截保存,后面子节点加入需要用到
记录生成的最后部分内容,此内容需要在其它节点加入 Kubernetes 集群之前就执行。根据 init 后的提示,创建kubectl
配置文件
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看 docker 镜像:
sudo docker images
使用 kubectl 命令查看节点情况
kubectl get node
发现master 节点状态为NotReady(由于我们还没安装网络扩展),此时可执行以下命令查看服务状态
systemctl status kubelet
发现kubectl此时已经处于运行状态。
2、安装calico网络
下载配置文件
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
修改配置文件,大概在625行左右
找到 625 行左右的 192.168.0.0/16 ,并修改为我们初始化时配置的 10.244.0.0/16
加载配置文件
kubectl apply -f calico.yaml
查看 calico网络是否创建成功
kubectl get pods -n kube-system
再次查看 node,可以看到 master 节点状态为 ready
kubectl get node
至此,k8s master节点创建完毕,下面我们操作node节点。
四、node 节点操作
在操作前,我们需要先把基本环境配置以及配置安装k8s这两节操作完成,然后在node节点输入以下命令加入集群
kubeadm join 95.214.113.168:6443 --token 6btq2l.x3srd3m00d99y98u \ --discovery-token-ca-cert-hash sha256:3e13582a0a673519680545fc690767f9b80f456ec1d07c3d98ab7f5b3d508016
出现如下情况表示成功
如果令牌过期了,可以使用这个命令重新生成令牌
kubeadm token create --print-join-command
五、master 节点查看集群节点数
kubectl get nodes
我们可以看到node1节点加入了。
我们重新输入以下命令查看运行结果,这里要等一段时间才可以。
kubectl get pods -n kube-system
发现全部处于Running,并且都有一个可用,这样我们就完成了k8s集群的搭建。
0条评论