现在云和容器快速发展时代,Kubernetes(k8s)脱颖而出,更是成为了事实上大规模管理容器编排的标准。然而,基于云即使是运行最小的集群也要大费周章,而且需要很多成本,对于迫切想入门熟悉Kubernetes的个人来说,进入的门槛可不小。实际上也有很多折衷的方法让我们简单入门,之前虫虫文章介绍过基于kind的一键K8s环境,本文我们在介绍一个老外用一个老旧MacBook Air安装Minikube,打造一个724在线的Kubernetes集群实验环境的过程,希望能大家学习和启发。
Kubernetes有很多种本地化方案,包括kind,Minikube,k3s,Docker Desktop和Microk8s等。为了保持集群常在线,以保持一些运行时间相关的(cronjobs)或事件驱动的(异步数据处理)工作负载。
通过一个闲置的2012 年的MacBook Air,其CPU支持必要的基于软件的虚拟化,可以安装运行Kubernetes的Linux虚拟机。
因为目标是实现一种低成本的解决方案,所以需要考虑笔记本全天候运行需要耗费的电量。根据苹果公司的规格表,估计该系统(显示屏关闭且工作量相对较小)平均将消耗约10W功率。
定价估算:
10 x 1/1000 x 24 x 30.4 x 0.5 (¥/kWh)
=3.65 ¥/month
由于MacBook Air会自动休眠,为了保持机器一直在线需要禁止睡眠。
可以通过电源管理设置(pmset)命令行禁用睡眠。在mac可以通过以下命令使睡眠时间无限长,并在没有显示器连接时防止睡眠:
sudo pmset -a sleep 0;
sudo pmset -a disablesleep 1
按照Minikube安装说明,使用VitualBox虚拟机管理程序+ vm-driver在MacBook Air上安装Minikube:
要检查macOS是否支持虚拟化,请在终端上运行以下命令。
sysctl -a | grep -E --color 'machdep.cpu.features|VMX'
linux下为:
grep -E --color 'vmx|svm' /proc/cpuinfo
如果在VMX输出中看到(应该是彩色的),则说明主机已启用VT-x功能。
在macOS上安装Minikube的最简单方法是使用Homebrew:
brew install minikube
还可以通过下载二进制包的方式安装:
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
&& chmod +x minikube
再移动Minikube执行路径即可。
sudo mv minikube /usr/local/bin
Linux下安装也可以通过包管理器安装,比如
yum install minikube
或者下载二进制包
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
&& chmod +x minikube
然后添加执行路径即可。
sudo install minikube /usr/local/bin/
在主要开发主机上安装kubectl。但是可以按照Kubectl安装说明安装在计划从中访问群集的系统上。
为了使kubectl命令进入Minikube集群,必须在VM配置中设置端口转发规则,将请求转发到端口8443。该转发通过VirtualBox GUI完成:
在minikube start服务器系统上执行命令时,会在kubectl上下文添加到kubectl配置文件 ~/.kube/config:
apiVersion: v1
clusters:
- cluster:
certificate-authority: /.minikube/ca.crt
server: https://192.168.99.100:8443
name: minikube
contexts:
- context:
cluster: minikube
user: minikube
name: minikube
current-context: "minikube"
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate: /.minikube/client.crt
client-key: /.minikube/client.key
需要复制到客户端计算机上(以及client.crt和client.key文件)。将这些文件复制到
apiVersion: v1
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://:51928
name: minikube-macbook-air
contexts:
- context:
cluster: minikube-macbook-air
user: minikube-macbook-air
name: minikube-macbook-air
current-context: "minikube-macbook-air"
kind: Config
preferences: {}
users:
- name: minikube-macbook-air
user:
client-certificate: /.minikube-macbook-air/client.crt
client-key: /.minikube-macbook-air/client.key
该配置既可以直接加入到主.kube/config文件中,也可以存储为单独的配置,并通过设置KUBECONFIG环境变量来使用
注意:insecure-skip-tls-verify:true之所以使用,是因为Minikube设置的证书颁发机构未配置为以这种方式接受来自另一个系统的传入请求。
至此,我们已经能够连接到群集,但是需要当客户端和服务器在同一内网时才可以。为了从外网可以连接,还需要配置另外两项:
使用dynu.com(国内可以使用花生壳)设置免费的动态DNS 。完成此操作后,替换
将路由器配置为将端口上的传入请求转发51928到MacBook Air,并设置计算机MAC地址保留IP地址,以确保其不变。
这样就能从外部网络成功连接到集群。
通过使用非常便宜的成本,大概一每月包烟的电费(宽带成本未计)。就打造了一个始终在线的Kubernetes集群实验环境(具有单个2 vCPU + 2 GB内存节点),可以进行实验。其实上现在树莓派4B配置达到了双CPU+4G可能效果会更好,有条件的小伙伴可以试试。
页面更新:2024-06-13
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号