一、kubeadm

kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。这个工具能通过两条指令完成一个 kubernetes 集群的部署:

# 创建一个 Master 节点
$ kubeadm init
# 将一个 Node 节点加入到当前集群中
$ kubeadm join <Master 节点的 IP 和端口 >

二、前置要求

  • 一台或多台机器,操作系统 CentOS7.x-86_x64。
  • 硬件配置:2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多
  • 集群中所有机器之间网络互通
  • 可以访问外网,需要拉取镜像
  • 禁止 swap 分区

三、部署步骤

  • 在所有节点上安装 Docker 和 kubeadm
  • 部署 Kubernetes Master
  • 部署容器网络插件
  • 部署 Kubernetes Node,将节点加入 Kubernetes 集群中
  • 部署 Dashboard Web 页面,可视化查看 Kubernetes 资源

在这里插入图片描述

四、环境准备

先准备三台虚拟机,配置好网络设置、节点名及基础环境。

可以参考这篇文章:Hadoop (三) --------- Hadoop 运行环境搭建 (虚拟机)

将每一台虚拟机的名称从 hadoop 改成 node 即可。。。。。

在这里插入图片描述

关于 XShell 所有节点执行相同的命令,我们在 查看 ------> 撰写 -----> 撰写栏 ,然后在下面输入命令即可

在这里插入图片描述

date 查看时间 
yum install -y ntpdate
ntpdate time.windows.com 同步最新时间
关闭 selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
关闭 swap:
swapoff -a 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab 永久
free -g 验证,swap 必须为 0

五、安装环境

所有节点安装 Docker、kubeadm、kubelet、kubectl。

Kubernetes 默认 CRI (容器运行时) 为 Docker,因此先安装 Docker。

1. 安装 docker

① 卸载 docker

卸载系统之前的 docker

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

② 安装 Docker-CE

Docker CE 指的是 docker 社区版

安装必须的依赖

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

设置 docker repo 的 yum 位置,即设置存储库

sudo yum-config-manager \  
--add-repo \ 
https://download.docker.com/linux/centos/docker-ce.repo

安装 docker,以及 docker-cli

sudo yum install -y docker-ce docker-ce-cli containerd.io

③ 配置 docker 加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' 
{ 
	"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker 

④ 启动 docker & 设置 docker 开机自启

systemctl enable docker

基础环境准备好,可以给三个虚拟机备份一下;为 node103 分配 16g,剩下的3g。方便未来侧测试

2. 添加阿里云 yum 源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

3. 安装 kubeadm,kubelet 和 kubectl

yum list|grep kube
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3

systemctl enable kubelet
systemctl start kubelet

六、部署 k8s-master

1. master 节点初始化

kubeadm init \ 
--apiserver-advertise-address=192.168.38.131 \ 
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ 
--kubernetes-version v1.17.3 \ 
--service-cidr=10.96.0.0/16 \ 
--pod-network-cidr=10.244.0.0/16

由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址。可以手动按照我们的 images.sh 先拉取镜像,地址变为 registry.aliyuncs.com/google_containers 也可以。

--apiserver-advertise-address=192.168.38.131    这个参数就是master主机的IP地址,例如我的Master主机的IP是:192.168.38.131
--image-repository=registry.aliyuncs.com/google_containers  这个是镜像地址,由于国外地址无法访问,故使用的阿里云仓库地址:registry.aliyuncs.com/google_containers
--kubernetes-version=v1.17.4   这个参数是下载的k8s软件版本号
--service-cidr=10.96.0.0/12       这个参数后的IP地址直接就套用10.96.0.0/12 ,以后安装时也套用即可,不要更改
--pod-network-cidr=10.244.0.0/16    k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.244.0.0/16

科普:无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由 IP 数据包的对 IP 地址进行归类的方法。拉取可能失败,需要下载镜像。

运行完成提前复制:加入集群的令牌

也可以将下载镜像所用到的脚本上传到 node101 节点,并执行 master_images.sh 这个脚本,因为上述命令下载镜像可能会失败,执行完之后,在执行上面初始化命令。。。。

在这里插入图片描述
在这里插入图片描述

执行完成初始化命令。。。

在这里插入图片描述

2. 测试 kubectl (主节点执行)

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get nodes 获取所有节点

目前 master 状态为 notready。等待网络加入完成即可。

journalctl -u kubelet 查看 kubelet 日志
kubeadm join 192.168.38.131:6443 --token 8mgmlh.cgtgsp3samkvpksn \ --discovery-token-ca-cert-hash

七、安装 Pod 网络插件(CNI)

$ kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

以上地址可能被墙,大家获取上传我们下载好的 flannel.yml 运行即可,同时flannel.yml 中指定的 images 访问不到可以去 docker hub 找一个 wget yml 的地址,vi 修改 yml 所有 amd64 的地址都修改了即可。

kubectl apply -f kube-flannel.yml

等待大约 3 分钟

kubectl get pods -n kube-system 查看指定名称空间的 pods
kubectl get pods --all-namespaces查看所有名称空间的 pods

$ ip link set cni0 down 如果网络出现问题,关闭 cni0,重启虚拟机继续测试执行 watch kubectl get pod -n kube-system -o wide 监控 pod 进度等 3 -10 分钟,完全都是 running 以后继续

八、加入 Kubernetes Node

在 Node 节点执行。向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令:确保 node 节点成功

查看添加新节点的命令

kubeadm token create --print-join-command

在 node102 和 node103 节点执行 kubectl join 命令即可。。。

token 过期怎么办
kubeadm token create --print-join-command
kubeadm token create --ttl 0 --print-join-command
kubeadm join --token y1eyw5.ylg568kvohfdsfco --discovery-token-ca-cert-hashsha256: 6c35e4f73f72afd89bf1c8c303ee55677d2cdb1342d67bb23c852aba2efc7c73

执行 watch kubectl get pod -n kube-system -o wide 监控 pod 进度等 3-10 分钟,完全都是 running 以后使用 kubectl get nodes 检查状态

在这里插入图片描述

Logo

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

更多推荐