一、 准备材料
离线安装包:k8s-install.zip
网盘:https://cloud.189.cn/t/z2Y7Nf7RZfau (访问码:3jfk)
二、 环境规划
操作系统 |
IP |
CPU/MEM |
主机名 |
角色 |
CentOS 7.7-x86_64 |
192.168.110.100 |
2/4G |
K8s-master |
master |
CentOS 7.7-x86_64 |
192.168.110.111 |
2/4G |
K8s-node1 |
work node |
【版本号】
name |
version |
Docker |
19.03.12 |
kubeadm |
1.21.2 |
kubernetes |
1.21.2 |
三、 CenOS7.x部署
3.1 部署master节点
3.1.1 一键部署
# 解压k8s-install.zip包,进入解压后的文件夹
[root@hadoop100 k8s-install]# pwd
/usr/local/java/software/k8s-install
[root@hadoop100 k8s-install]# ls
dashboard-ui docker-ce-19.03.12.tar.gz flannel-v0.14.0.tar install.sh k8s1202-images.tar.gz k8s1202-rpm.tar.gz kube-flannel-v0.14.1.yml packages.tar.gz
# 给脚本赋权限
[root@hadoop100 k8s-install]# chmod +x install.sh
[root@hadoop100 k8s-install]# ls
dashboard-ui docker-ce-19.03.12.tar.gz flannel-v0.14.0.tar install.sh k8s1202-images.tar.gz k8s1202-rpm.tar.gz kube-flannel-v0.14.1.yml packages.tar.gz
# 执行脚本 k8s-master:修改的新hostname
[root@hadoop100 k8s-install]# ./install.sh k8s-master
# 等待脚本自动安装,出现如下提示则安装完成,重启服务器
# 重启后hostname为之前的参数k8s-master
# 该操作会升级系统内核,重启前内核
# 重启后内核
3.1.2 使用 kubeadm 初始化集群
# 初始化集群
[root@k8s-master ~]# kubeadm init --kubernetes-version=v1.21.2 --apiserver-advertise-address=192.168.110.100 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
# 出现如下则集群初始化完成
# 执行提示命令
[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 将join命令记录下来,这是将node节点加入到集群的执行操作命令:
kubeadm join 192.168.110.100:6443 --token tmfusx.gznjcc8hik1mbzz8 \
--discovery-token-ca-cert-hash sha256:83fe7f7f321d246884814209587ad91cfcd31c6f44607bd101233e4f78882d14
# 使用 kubectl 查看 nodes
[root@k8s-master ~]# kubectl get nodes
当前状态Notready,是因为网络插件flannel还没有部署
3.1.3 初始化网络插件 flannel
#加载镜像(所有节点都加载)
[root@k8s-master ~]# docker load < flannel-v0.14.0.tar
#初始化(只在master)
[root@k8s-master ~]# kubectl apply -f kube-flannel-v0.14.1.yml
#使用 kubectl 查看 nodes
[root@k8s-master k8s-install]# kubectl get nodes
至此,master操作完成
3.2 部署node节点
3.2.1 一键部署
# 同master节点一样的操作
[root@hadoop100 k8s-install]# pwd
/usr/local/java/software/k8s-install
[root@hadoop100 k8s-install]# ls
dashboard-ui docker-ce-19.03.12.tar.gz flannel-v0.14.0.tar install.sh k8s1202-images.tar.gz k8s1202-rpm.tar.gz kube-flannel-v0.14.1.yml packages.tar.gz
#部署成功后重启机器
3.2.2 加入集群
# 执行master步骤初始化集群后记录的命令,如下:
kubeadm join 192.168.110.100:6443 --token tmfusx.gznjcc8hik1mbzz8 \
--discovery-token-ca-cert-hash sha256:83fe7f7f321d246884814209587ad91cfcd31c6f44607bd101233e4f78882d14
# 出现如下结果即加入成功
# 去master查看集群节点信息
# 可以看到k8s-node1已经加入集群,如果STATUS状态为NotReady,如下图,就多等一会,可能是加入未完成
3.2.3 复制admin.conf文件
# 使用scp命令将maser的“/etc/kubernetes/admin.conf”复制到node节点
# k8s-master执行:
[root@k8s-master ~]# scp /etc/kubernetes/admin.conf @192.168.110.111://etc/kubernetes/
# k8s-node1执行:
[root@k8s-node1 ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@k8s-node1 ~]# source ~/.bash_profile
# 现在可以在k8s-node1节点使用kubectl命令了
注:该步骤是为了解决node节点不能使用kubectl命令
3.3 部署其他node节点
重复3.2的部署即可
3.4 部署完成
到此,通过 kubeadm 搭建 k8s 环境已经完成。
四、 k8s可视化(dashboard)部署
4.1 准备文件
dashboard-ui目录下
4.2 加载ui镜像
[root@k8s-master images]#cd /usr/local/java/software/k8s-install/dashboard-ui/images
[root@k8s-master images]# docker load < kubernetesui-dashboard.tar
[root@k8s-master images]# docker load < kubernetesui-metrics-scraper.tar
# docker image命令查看镜像导入是否正常:
扩展:
保存镜像到本地:docker save -o kubernetesui-dashboard.tar kubernetesui/dashboard: v2.0.0-rc5
kubernetesui-dashboard.tar:保存本地的镜像包名
kubernetesui/dashboard: v2.0.0-rc5:服务器里的镜像
4.3 执行配置文件
[root@k8s-master dashboard-ui]# pwd
/usr/local/java/software/k8s-install/dashboard-ui
[root@k8s-master dashboard-ui]# ls
dashboard-svc-account.yaml dashboard.yml images
[root@k8s-master dashboard-ui]# kubectl apply -f dashboard.yml
扩展:
如果要删除该配置文件可以执行如下命令:kubectl delete-f dashboard.yml
# 检查配置文件提供的pod是否正常执行
# 检查service资源是否正常映射了我们指定的端口32001(配置文件里指定的)
4.4 创建角色及赋权
# 想要访问dashboard服务,就要有访问权限,创建kubernetes-dashboard管理员角色
[root@k8s-master dashboard-ui]# kubectl apply -f dashboard-svc-account.yaml
扩展:
删除角色:kubectl delete clusterrolebinding kubernetes-dashboard
4.6 浏览器访问
浏览器输入:http://192.168.110.100:32001
五、 k8s卸载
彻底卸载k8s,两个步骤
步骤一:
sudo kubeadm reset -f
sudo rm -rvf $HOME/.kube
sudo rm -rvf ~/.kube/
sudo rm -rvf /etc/kubernetes/
sudo rm -rvf /etc/systemd/system/kubelet.service.d
sudo rm -rvf /etc/systemd/system/kubelet.service
sudo rm -rvf /usr/bin/kube*
sudo rm -rvf /etc/cni
sudo rm -rvf /opt/cni
sudo rm -rvf /var/lib/etcd
sudo rm -rvf /var/etcd
sudo apt-get remove kube*
步骤二:
yum -y remove kubelet kubectl kubeadm kubernetes-cni
步骤三:
如果需要,还可以去docker里删除k8s的镜像