背景:我正在尝试在“开发/本地主机”环境中在docker和kubernetes上进行一些学习和试验,以便以后可以在某些Cloud上“真实复制”。但是我的笔记本电脑上的所有东西(磁盘容量,内存等)都用光了。所以我想出了“为什么不从云开发?”
我知道AWS有一些Kubernetes服务,但是如果我的理解是正确的,那主要是为了部署已经配置良好的堆栈,它并不非常适合堆栈配置本身的开发。
稍作搜索后,我发现了Minikube,它可以通过在单台机器上运行kubernetes部署来帮助我们试验配置。 我想从EC2实例(理想情况下运行Amazon Linux 2 OS)设置kubernetes + Minikube(或同等版本)开发环境。
我很难弄清
答案 0 :(得分:3)
在这里怎么做
使用8gb的ram和一个公共ip启动ec2实例,确保您可以通过常规方式切换到此框。确保其为unbuntu实例(我正在使用16.04)。
一旦进入实例,请运行以下命令以更新并安装docker
sudo -i
apt-get update -y && apt-get install docker.io
安装minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
安装kube cli
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.8.0/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
现在验证版本只是为了确保您可以看到它
/usr/local/bin/minikube version
使用以下命令将自动补全功能添加到当前shell中:
source <(kubectl completion bash)
以此启动集群(注意没有vm driver行)
/usr/local/bin/minikube start --vm-driver=none
使用以下方法检查其运行情况:
/usr/local/bin/minikube status
正确的做法是,您可以在没有额外节点的情况下运行基本群集:)
如果您想要一个好的仪表板,请执行以下操作(我在Windows 10上使用wsl在这里使用Windows,可以根据需要在Mac或Linux上执行此操作,但步骤略有不同,但只要您可以执行基本步骤,例如设置变量,您会很酷)
要在本地框上查看gui,您将需要运行仪表板并执行其他有用的操作,在本地运行kubectl
Please follow this to install kubectl locally
在Windows上,您可以像这样使用巧克力:
choco install kubernetes-cli
现在使用/ etc / kubernetes中的scp从ec2实例下载admin.conf文件。
现在设置一个名为KUBECONFIG
的局部变量,并指向您刚刚下载的文件。
转到ec2实例,并使用它来安装仪表板。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard-arm.yaml
此仪表盘是开发仪表盘,请勿在生产环境中使用它:)
运行以下命令,找出仪表板运行在哪个IP地址上
/usr/local/bin/kubectl get svc --namespace kube-system
输出应该看起来像这样:
root@ip-172-31-39-236:~# /usr/local/bin/kubectl get svc --namespace kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 49m
kubernetes-dashboard NodePort 10.109.248.81 <none> 80:30000/TCP 49m
现在在您的本地盒上运行此程序,以从本地计算机通过隧道连接到仪表板
ssh -i ~/.ssh/keyfile.pem -L 8080:10.109.248.81:80 ubuntu@ec2-i-changed-this-for-this-post.eu-west-1.compute.amazonaws.com
现在在以下位置打开网络浏览器:
http://localhost:8080
,您现在应该可以看到仪表板。看起来像这样:
对不起,这篇文章太长了,但是涉及到很多。还请注意,如果您需要生产实例,则实际上这只是一个开发机器,您需要以更高的安全性执行此操作,并且可能不以root身份运行东西:)
另一件事,您可能会注意到本指南中未在本地使用kubectl,如果您使用(本地),则可以使用它来访问远程api
kubectl proxy
在kubernetes主页here上有关于此的指南 还要注意,admin.conf可能以localhost作为服务器地址,它必须是ec2实例的地址,并且您需要确保可以从ec2实例的安全组中的ip访问该端口。
如果您卷曲或浏览到http://localhost:8001/api
,您应该会看到它或类似的东西:)
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "192.168.4.60:6443"
}
]
}
答案 1 :(得分:0)
我不确定EC2是否允许嵌套虚拟化。如果没有,则始终可以使用minikube --vm-driver = none。这是我在运行虚拟箱存在限制的前提下执行的操作。但是我不得不承认,关于在没有vm的情况下使用minikube并没有很多好的文档。我没有亲自尝试过,请查看canonical的lxd。
https://kubernetes.io/docs/getting-started-guides/ubuntu/local/
答案 2 :(得分:0)
转到此处:https://github.com/scholzj/aws-minikube
我正在t2.small上运行它,但是很难,您必须从基础架构部署中删除资源请求。使用预留实例,每个月大约要花14美元。选择GCP可能更有意义,因为他们会亲切地为大师付费。
答案 3 :(得分:0)
考虑为轻量级Kubernetes集群提供工具以进行开发/测试,例如: