前言
本篇文章将使用Centos7系统并使用kubeadm来搭建k8s 1.19版本的单Master多Node节点的集群。安装参照以下步骤进行。
物理环境
三台虚拟机分别按照以下分配:
IP地址 | 主机名 |
192.168.5.200 | k8s-master |
192.168.5.201 | k8s-node1 |
192.168.5.202 | k8s-node2 |
系统初始化
对每台机器进行系统初始化,包括关闭swap,关闭防火墙,设置主机名等。
环境准备
为所有节点安装Docker。Docker是Kubernetes支持的容器运行时之一。
安装kubeadm、kubelet和kubectl
在所有节点上安装这些软件。kubeadm会帮助你引导集群并利用kubelet进行进一步的配置。kubectl则是一个很有用的命令行工具。
引导集群
在主节点上,你将使用kubeadm init 初始化主节点。
置网络插件
如果你不使用kubeadm init默认的网络插件,会需要你在kubeadm init运行完之后手动安装一个网络解决方案。
添加剩余节点
在其他每个节点上,运行kubeadm join来连接节点到集群。
从零开始
1、系统初始化
初始化中的操作需要在每台设备中需要进行操作。
设置主机名:
# 设置主机名(分别替换为对应的主机名)
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
同步三台主机的hosts文件:
cat <<EOF > /etc/hosts
192.168.5.200 k8s-master
192.168.5.201 k8s-node1
192.168.5.202 k8s-node2
EOF
需要关闭selinux:
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
还有交换空间也要同步关闭:
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
调整内核参数,允许转发:
modprobe br_netfilter
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
# 确认网桥转发已经是1
sysctl net.bridge.bridge-nf-call-iptables
2、环境准备
在此处我们将安装docker并且通过阿里云镜像站拉取需要的镜像。
安装docker(所有节点都需要安装):
# 卸载旧版本的docker
yum remove -y docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce-19.03.11 docker-ce-cli-19.03.11 containerd.io
# 启动 Docker 服务
systemctl enable --now docker
# 添加 kubelet docker 服务用户组
groupadd docker
usermod -aG docker $USER
拉取需要用到的镜像,通过运行一下脚本将自动拉取镜像并重新标记镜像(在master节点运行此脚本):
#!/bin/bash
KUBE_VERSION=v1.19.0
PAUSE_VERSION=3.2
ETCD_VERSION=3.4.13-0
COREDNS_VERSION=1.7.0
images=(
kube-apiserver:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-proxy:${KUBE_VERSION}
pause:${PAUSE_VERSION}
etcd:3.4.9-1
coredns:${COREDNS_VERSION}
)
for imageName in ${images[@]} ; do
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done
3、安装Kubeadm, Kubelet 和 Kubectl
在所有节点执行以下命令:
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
安装 kubeadm, kubelet 和 kubectl:
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
启动 kubelet:
systemctl enable --now kubelet
4、初始化 Kubernetes 主节点
在 k8s-master 节点执行以下命令:
# 用kubeadm初始化master节点
kubeadm init --kubernetes-version=v1.19.0 --pod-network-cidr=10.244.0.0/16
# 记下 kubeadm join 的命令,以便稍后在worker节点使用
# 为kubectl设置环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf
# 如果你是非root用户,运行以下命令将上述变量置入你的 .bashrc 文件
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> $HOME/.bashrc
5、配置网络插件
部署 Pod 网络 这里以 flannel 为例:
1、拉取镜像:
# 拉取 flannel 镜像
FLANNEL_VERSION=v0.13.0 # 作为示例,具体版本号可能有所不同
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/flannel:${FLANNEL_VERSION}-amd64
# 重新标记镜像
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/flannel:${FLANNEL_VERSION}-amd64 quay.io/coreos/flannel:${FLANNEL_VERSION}-amd64
# 验证镜像
docker images | grep flannel
2、配置flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
6、 添加 Node 节点
在k8s-node1和k8s-node2节点上优先拉取镜像:
#!/bin/bash
K8S_VERSION=v1.19.0
PAUSE_VERSION=3.2
images=(
kube-proxy:${K8S_VERSION}
pause:${PAUSE_VERSION}
)
for imageName in ${images[@]} ; do
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done
在 k8s-node1 和 k8s-node2 节点上执行由 kubeadm init 生成的 join 命令。例如:
kubeadm join --token <token> <master-ip>:6443 --discovery-token-ca-cert-hash sha256:<hash>
安装完成后,不出意外的话很快就能看到如下的信息:

原文始发于微信公众号(青檬小栈):手把手带你搭建k8s集群
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/289742.html