一、前言
k8s集群搭建最大的问题就是需要有多个节点机器。
- 在自己电脑上搞虚拟机,怕资源不够;
- 用minikube搭建,只是一个单节点的集群,没啥意思;
- 用云厂商的节点机器搭建,就需要自己花钱,而且还不少;
所以有一个免费的网站可以供我们自行搭建k8s集群,且免费。这个网站就是:
play-with-k8s,它有如下的特点及限制:
- 需要有Github或者DockerHub的账号才能登录;
- 同一个浏览器Session只能使用4个小时;
- 最多可以使用5个节点机器;
- 每台机器配置为1核4G;
- 已经预装了Docker、kebuctl、kubelet、kubeadm等搭建k8s必须的组件;
- 集群之间网络是互通的,但是外网无法访问该集群;
二、准备工作
登录平台后,使用自己的Github账号或者DockerHub账号登录,然后点击start,进入控制台界面后,先创建一个实例。
三、K8s集群搭建
3.1 初始化Master
我们使用kubeam初始化Master节点:
# --apiserver-advertise-address指定master在集群中的通讯地址
# --pod-network-cidr指定集群的子网范围
kubeadm init --apiserver-advertise-address 192.168.0.8 --pod-network-cidr=10.244.0.0/16
执行结果如下:
Master初始化结果执行内容主要包括:
- kubeadm执行初始化前的检查;
- 生成token和证书;
- 生成kubeConfig文件,后续kubelet与Master节点通信时需要用到这个;
- 安装Master组件,会从Google的Registry下载组件的Docker镜像。这一步可能会花一些时间,主要取决于网络质量;
- 安装附加组件kube-proxy和kube-dns;
- Kubernetes Master初始化成功;
- 提示如何配置kubectl,参考3.2;
- 提示如何安装Pod网络,参考3.3;
- 提示如何注册其他节点到Cluster,参考3.4;
3.2 配置kubectl
# 为root用户使用kubectl做配置
export KUBECONFIG=/etc/kubernetes/admin.conf
3.3 安装Pod网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
3.4 注册其他节点到Cluster
此时我们只有一个master节点,可以执行如下命令查看下当前节点及Pod的情况:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1 Ready control-plane,master 2m57s v1.20.1
kubectl get pod --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-74ff55c5b-7x4b5 1/1 Running 0 4m49s
kube-system coredns-74ff55c5b-zvqrl 1/1 Running 0 4m49s
kube-system etcd-node1 1/1 Running 0 3m48s
kube-system kube-apiserver-node1 1/1 Running 0 3m59s
kube-system kube-controller-manager-node1 1/1 Running 0 4m3s
kube-system kube-flannel-ds-dpdsk 1/1 Running 0 3m3s
kube-system kube-proxy-7pz5t 1/1 Running 0 4m49s
kube-system kube-scheduler-node1 1/1 Running 0 4m6s
然后依次新建4个实例,执行如下的命令加入集群。
kubeadm join 192.168.0.8:6443 --token pwavj7.pq9wskbhg1gc1ws3 \
--discovery-token-ca-cert-hash sha256:8490581b6d223133473f0037104aaa9dac96f7dd9a01c3f54b3c50719540df24
全部执行完毕后,我们可以通过kubectl get nodes
和kubectl get pod --all-namespaces
查看节点和Pod的状态。最终等待一整子后,应该全部显示ready和running状态。
至此k8s集群就搭建好了。
四、总结
说实话,体验不是很好。
- 命令竟然不允许copy和paste,只能手动一个个得敲,浪费太多时间;
- 对于普通用户,需要自己创建,然后切换到普通用户后,想要再换回root用户,不知道密码;
- 普通用户执行kubectl时,sudo命令无法执行,只能使用root用户执行kubectl;
总体来说,只能是一个玩具场所,体验一下k8s集群搭建的后半段。
网友评论