目录
写在前面:本文安装单点master多node的k8s集群,主要用于k8s学习或k8s环境测试;部署的是1.23版本,在1.24版本起,K8S底层使用的是containerd容器;之后还会不定期更新k8s的相关内容!
部署步骤概览
1、基础环境部署
1、安装两台新的centos7虚拟机(我这里演示一台做master,一台做node,还可以多家几台node,对node的操作不多哦!)
2、配置静态IP地址
3、刷新网络服务
4、设置主机名,区分虚拟机
(以上是一些简单的环境部署,以前的文章有提过,这里就不多赘述啦)
下面的操作是matser和node同步,所以可以在shell里面这样设置,就可以同时操作:
5、配置hosts文件,通过主机名互相访问:
6、关闭selinux和防火墙
[root@k8s-master ~]# vim /etc/selinux/config
将selinux=enforcing改成selinux=disabled
[root@k8s-master ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@k8s-master ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
7、关闭交换分区
原因:交换分区是当内存不够时,会使用swap分区,但是swap分区的性能不高,所以k8s默认不允许使用;
临时关闭:[root@k8s-master ~]# swapoff -a
永久关闭:[root@k8s-master ~]# vim /etc/fstab注释最后一行
8、调整内核参数,输入以下命令:
overlay用于支持overlay文件系统,提供容器所需的文件系统隔离;
br_netfilter用于Linux桥接网络和IP数据包过滤,实现K8S的网络通信;
确保相关数据包被正确的转发,确保容器之间的流量能够正确的被主机转发;
9、更新和配置软件源:
添加阿里云yum源:[root@k8s-master ~]# wget -O /etc/yum.repos.d/Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
生成yum元数据缓存:[root@k8s-master ~]# yum clean all && yum makecache
配置阿里云docker yum仓库源:[root@k8s-master ~]# yum install -y yum-utils
[root@k8s-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
10、配置ipvs功能(实现负载均衡):
[root@k8s-master ~]# yum install -y ipset ipvsadm
加载对应模块:
11、配置时间同步:
[root@k8s-master ~]# systemctl start chronyd && systemctl enable chronyd
[root@k8s-master ~]# timedatectl set-timezone Asia/Shanghai
查看时间相关设置:[root@k8s-master ~]# timedatectl
基础环境部署就完成了!
2、docker环境部署
1、下载并启动docker:
[root@k8s-master ~]# yum install -y docker-ce-20.10.24-3.el7 docker-ce-cli-20.10.24-3.el7 containerd.io
启动docker:[root@k8s-master ~]# systemctl start docker
设置开机启动:[root@k8s-master ~]# systemctl enable docker
验证:[root@k8s-master ~]# systemctl status docker
2、配置docker,然后重启docker:
3、重启虚拟机,验证是否装好:
[root@k8s-node1 docker]# reboot
[root@k8s-node1 ~]# docker ps
#这里使用docker ps看docker是否启动成功
docker的环境就准备好了!
3、配置k8s集群
1、配置K8S组件源:
构建本地yum缓存:[root@k8s-master ~]# yum makecache
2、安装K8S:
[root@k8s-master ~]# yum install -y kubeadm-1.23.17-0 kubelet-1.23.17-0 kubectl-1.23.17.0
[root@k8s-master ~]# cat <<EOF > /etc/sysconfig/kubelet
> KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
> KUBE_PROXY_MODE="ipvs"
> EOF
[root@k8s-master ~]# systemctl enable --now kubelet
第三步也完成了!
4、集群初始化
最开始不是所有会话一起操作的吗?现在开始主要是在master的操作:
1、mster集群初始化(只在maste上做):
[root@k8s-master ~]# kubeadm init \
> --kubernetes-version=v1.23.17 \
> --pod-network-cidr=10.224.0.0/16 \
> --service-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.10.150 \
> --image-repository=registry.aliyuncs.com/google_containers
#上面图片里copy下来一条条运行的!!!
[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
2、将node加入master集群:
上面复制的那个,复制到node节点上,有几个节点就复制到所有node上;我这里只开了一台做node,所以只加了一个进去。
在master上查看node:
在master上给node打标签:[root@k8s-master ~]# kubectl label node k8s-node1 node-role.kubernetes.io/worker=worker
3、安装Calico网络插件:
[root@k8s-master ~]# wget https://docs.projectcalico.org/archive/v3.25/manifests/calico.yaml
[root@k8s-master ~]# kubectl apply -f calico.yaml
等待status都变成ready:[root@k8s-master ~]# kubectl get node
4、K8S配置ipvs:
[root@k8s-master ~]# kubectl edit configmap kube-proxy -n kube-system
按a修改:
删掉所有kube-proxy使之重启:
[root@k8s-master ~]# kubectl delete pods -n kube-system -l k8s-app=kube-proxy
5、验证集群搭建成功:
验证,出现如下效果即可:
第四步也结束了!现在集群已经搭建好了,下面的操作可做可不做,给大家介绍一个dashboard的软件,有可视化的效果。
5、安装dashboard软件
安装软件Dahboard(只在master上执行)
[root@k8s-master ~]# wget https://mirror.ghproxy.com/https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
[root@k8s-master ~]# vim recommended.yaml
启动:[root@k8s-master ~]# kubectl apply -f recommended.yaml
查看:[root@k8s-master ~]# kubectl get pods,svc -n kubernetes-dashboard
要等到运行出来了在做下一步!!!
[root@k8s-master ~]# vim dashboard-access-token.yaml
在文件里编辑以下内容:
[root@k8s-master ~]# cat dashboard-access-token.yaml
#Creating a Service Account
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
# Creating a ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
---
# Getting a long-lived Bearer Token for ServiceAccount
apiVersion: v1
kind: Secret
metadata:
name: admin-user
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "admin-user"
type: kubernetes.io/service-account-token
[root@k8s-master ~]# kubectl apply -f dashboard-access-token.yaml
访问dashboard:[root@k8s-master ~]# kubectl get svc -n kubernetes-dashboard
去windows里访问网址:
获取tocken登录:[root@k8s-master ~]# kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"}|base64 -d
运行效果:
此次分享到这里就结束了,如果有问题欢迎后台留言或评论区留言!