[toc]

一、下载

本次下载以存放公众号

关注公众号:雨中散步撒哈拉
并回复关键词:019

二、环境规划

1. 集群类型

Kubernetes集群大致分为两类:一主多从和多主多从。

  1. 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。

  2. 多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。

image.png

为了测试方便,本次搭建的是一主多从类型的集群。

2. 安装方式

kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包。

  1. minikube:一个用于快速搭建单节点的kubernetes工具。
  2. kubeadm:一个用于快速搭建kubernetes集群的工具。
  3. 二进制包:从官网上下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效。

我们需要安装kubernetes的集群环境,但是又不想过于麻烦,所以选择kubeadm方式。

3. 主机规划

角色IP地址操作系统配置
Master192.168.158.128CentOS7.8+,基础设施服务器2核CPU,2G内存,50G硬盘
Node1192.168.158.129CentOS7.8+,基础设施服务器2核CPU,2G内存,50G硬盘
Node2192.168.158.130CentOS7.8+,基础设施服务器2核CPU,2G内存,50G硬盘

三、环境准备

1.关闭防护墙,安全性

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

2.服务器时间同步

timedatectl set-timezone Asia/Shanghai

3.修改主机名

hostnamectl set-hostname master &&bash
hostnamectl set-hostname node1 &&bash
hostnamectl set-hostname node2 &&bash

4.添加hosts文件

vim /etc/hosts #主机名解析
末尾添加:
192.168.158.200 master 
192.168.158.201 node1
192.168.158.202 node2

其它2台可以添加,也可以拷贝文件:

5.免密交互(只在master上)

ssh-keygen #生成公钥
ssh-copy-id -i .ssh/id_rsa.pub root@node1
ssh-copy-id -i .ssh/id_rsa.pub root@node2
ssh-copy-id -i .ssh/id_rsa.pub root@master
ssh root@node1 #测试连接

6.关闭交换内存swap

swapoff -a #临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭

7.网桥设置

echo -e "net.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.d/k8s.conf
sysctl --system #使其生效

四、部署docker(3台操作相同)

1.解压安装docker

tar -zxvf docker-ce-18.09.tar.gz
cd docker && yum localinstall *.rpm -y #yum安装相关依赖

2.启动docker

systemctl start docker
systemctl enable docker #开机启动
docker version

3.docker加速器

vim /etc/docker/daemon.json #添加

{
"registry-mirrors": ["https://fskvstob.mirror.aliyuncs.com/"]
}

systemctl daemon-reload #重新加载

五、部署K8s群集

3台操作相同

1.解压安装k8s

cd ../
tar -zxvf kube114-rpm.tar.gz
cd kube114-rpm && yum localinstall *.rpm -y #yum解决依赖

2.导入k8s镜像

cd ../
docker load -i k8s-114-images.tar.gz
docker load -i flannel-dashboard.tar.gz

注意:如果导入镜像发生如下报错:
image20210701144459298.png

报错原因:镜像压缩包下载出问题了
解决办法:重新下载或更换镜像

3.查看k8s镜像

docker images #共9个镜像

image20210701144539651.png


在master上面操作

4.master初始化

kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16

image20210701144747829.png

若出现这种报错:

image20210701144813955.png

解决方法:

echo “1” >> /proc/sys/net/ipv4/ip_forward

image20210701144835560.png

5.查看节点

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 node

image20210701144958827.png

kubectl get pod --all-namespaces

image20210701145024053.png

6.配置KUBECONFIG变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile

验证

echo $KUBECONFIG  #应该返回/etc/kubernetes/admin.conf

7.部署flannel网络

kubectl create -f kube-flannel.yml
kubectl get node

image20210701150749309.png


在node节点服务器操作

8.kubeadm join 加入node节点

systemctl enable kubelet #添加开机启动k8s
kubeadm join 192.168.0.110:6443 --token 2vjmyw.9p6cbn8m8oqs41ta
–discovery-token-ca-cert-hash sha256:e4c1d3e9da26e2f488dec621122a30d8725762c20bf281519376ed0ae8c7204b #不要复制这个,要拷贝系统生成的token才行!

image20210701152311300.png

image20210701152322080.png

注意:若出现和master系统报错,相同办法解决即可!

echo "1" >> /proc/sys/net/ipv4/ip_forward

9.在master上面查看

kubectl get node

image20210701152358284.png


附录

1. 卸载k8s

kubeadm reset -f
modprobe -r ipip
lsmod
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd
yum clean all
yum remove kube*

2. 卸载docker

卸载:

  1. 查询docker安装过的包:
yum list installed | grep docker
  1. 删除安装包:
    根据上步查询出的安装包,进行卸载
yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y
  1. 删除镜像/容器等信息
rm -rf /var/lib/docker

Q.E.D.


只有创造,才是真正的享受,只有拚搏,才是充实的生活。