布衣k8s体会
一、前言
咱们在作业、学习进程中触摸到k8s,想要自己进行装备的话又需求很高的服务器本钱,而且装备起来也很麻烦。咱们的学习时刻大多是碎片化的,大多是下课后、下班后,买几台服务器却只有晚上才能用,钱花的实在是不爽。
本文展现运用kubesphere快速的建立一个k8s单主集群,并且删去节点做到开释服务器而不影响集群运行。等到需求学习时增加节点。花最少的钱,学最多的k8s。
推荐咱们有一台稳定的机器,我自身请求了一个腾讯云的2核4G的轻量服务器,作为我的主节点。其他机器我都运用可以随时开释,随时请求的按量付费或许竞价实例服务器(价格十分美丽)。
假如咱们也不想花钱买一台长时刻占有的服务器。那么主节点运用按量付费或许竞价实例服务器也是可以的。当咱们学习结束后,直接开释掉,只需求花费几毛钱。请求服务器的步骤这儿就不展开说了。
本篇文章共运用3台服务器
- 2核4G(新用户100多块钱买了一年)
- 2核2G竞价实例(0.04块钱一小时)
- 4核4G竞价实例(0.12块钱一小时)
咱们在进行装备之前,要保证每台服务器之间ssh拜访,内网互通最好。
其次主节点的6443端口要被从节点能拜访到。
二、装备集群
为了使杂乱的k8s集群装置简单化,并且方便办理,这儿运用kubesphere进行装置。
这一步骤中运用三台中的两台来装备集群
- 2核4G(新用户100多块钱买了一年),master
- 2核2G竞价实例(0.04块钱一小时),node1
1.下载 KubeKey
在主节点履行
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -
下载结束后会呈现文件kk
赋予kk权限
chmod +x kk
假如失利,可以重试几次。这步是到github上下载文件,有些服务器可能拜访github受限,咱们可以在自己的电脑上下载后,上传到服务器。地址:github.com/kubesphere/…
2.运用命令生成装备文件
在主节点履行
./kk create config --with-kubernetes v1.23.10 --with-kubesphere v3.3.2 -f config.yaml
假如咱们想运用其他版别,指定其他版别即可
在生成的装备文件中,咱们只需求重视下面这一段,假如不装备多主,controlPlaneEndpoint也是不必关怀的
所以咱们真实需求修正的就是红框里的内容,把hosts中的修正成咱们的节点,然后在roleGroups中为节点分配人物。
这儿我把master也当作作业节点运用
运用密钥无暗码登录的实例如下:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, privateKeyPath: "~/.ssh/id_rsa"}
3.创立集群
在主节点履行
./kk create cluster -f config.yaml
发现提示咱们缺少必要的依靠项
在各个节点装置一下
yum -y install conntrack-tools
yum -y install socat
yum -y install ipvsadm
再次履行./kk create cluster -f config.yaml
发现可以进行装置了
装置进程可能需求 10 分钟左右
等呈现
就代表装置完结了。
装置完结后运用kubectl get node
检查,可以看到集群中有两个节点现已安排妥当了
现在,可以通过 <NodeIP:30880
运用默许帐户和暗码 (admin/P@88w0rd
) 拜访 KubeSphere 的 Web 控制台。(保证你的30880可以拜访到)
参考:kubesphere.io/zh/docs/v3.…
咱们假如在这步遇到其他问题,可以参考官网装备。
三、增加节点
用k8s办理的运用越来越多后,原来0.04元每小时的机器就满意不了我的需求了。现在急需一个更强壮的机器到集群中作业。
第三台机器出厂了:4核4G竞价实例(0.12块钱一小时)
下面把这台1毛钱一小时的机器加入到咱们的集群里
1.修正config.yaml文件
在config.yaml中加入新服务器的地址
node2为我增加的新机器
2.为新机器装置k8s所需求的依靠
yum -y install conntrack-tools
yum -y install socat
yum -y install ipvsadm
3.集群增加新节点
./kk add nodes -f config.yaml
运用kubectl get node
验证
可以看到node2现已加入成功了
四、删去节点
当咱们学习完结、作业结束,或许当咱们觉得服务器的价格让咱们不堪重负的时候,那咱们就该开释按量付费或许竞价实例的服务器了。
我在这儿挑选删去4核4G的服务器,即node2
./kk delete node node2 -f config.yaml
在删去进程中会把node2节点上的pod驱赶,也就是布置在node2节点上的pod,会重新布置到其他节点。
可以看到现已成功了
当咱们履行删去节点时,假如prometheus-k8s在被删去的节点上,会告诉咱们驱除失利。这是因为默许装备了PodDisruptionBudget,这是为了防止驱赶时pod不可用数量太多,影响正常服务。
运用
kubectl get poddisruptionbudget -A
或kubectl get pdb -A
检查看到MAX UNAVAILABLE为N/A,ALLOWED DISRUPTIONS为0,即不答应驱赶,这就是咱们驱赶失利的原因。
pdb中有maxUnavailable 与minAvailable,他们两个是对立的两个值,代表最大不可用与最大可用。
解决方法:
1.删去该pdb
2.修正pdb装备使其可以答应驱赶
kubectl edit pdb prometheus-k8s -n kubesphere-monitoring-system
咱们修正minAvailable: 1为maxUnavailable:1
保存再次检查
发现现已答应驱赶了
五、试验一下
创立一个replicas为3的deployment,容器为nginx
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
可以看到现在我的nginx的pod中的两个在node2节点上,一个在master节点上(因为我把master当作了作业节点)
现在我删去node2节点,那么布置在node2上的nginx应该被驱赶转而布置到其他节点
履行
./kk delete node node2 -f config.yaml
删去node2节点
成功后检查nginx
发现nginx现已布置到node1啦
六、总结
这篇文章的初衷是为了让咱们少花时刻在k8s的布置上,少花钱在k8s的服务器上。把多余的精力放在k8s内的学习上。或是让没触摸过k8s想运用的同学们快速的布置一个k8s集群。
一起咱们也应该知道,开释服务器一起,服务器的磁盘也被开释了,磁盘上的数据也就丢失了。咱们在装备存储时应该考虑到这一点。