3

背景:我正在尝试在“开发/本地主机”环境中对 docker 和 kubernetes 进行一些学习和实验,以后我可以在某些云上“真正地”复制它们。但是我的笔记本电脑上的所有东西(磁盘容量、内存等)都用完了。所以我想出了“为什么不从云端开发?”

我知道AWS有一些Kubernetes服务,但如果我的理解正确的话,这主要是为了部署已经配置好的堆栈,不太适合堆栈配置本身的开发。

经过一番搜索,我发现了 Minikube,它可以帮助我们通过在单台机器上运行 kubernetes 部署来试验我们的配置。我想从 EC2 实例(理想情况下运行 Amazon Linux 2 操作系统)设置 kubernetes + Minikube(或等效)开发环境。

我很难弄清楚

  • 实际上可以在 EC2 上设置 Minikube 吗?
  • (如果是),我该怎么做?我尝试遵循这个答案,但在注册 Virtualbox Repo 和下载 Virtualbox 命令行工具时遇到了困难
4

4 回答 4

4

这是怎么做

启动一个 8gb 内存和公共 ip 的 ec2 实例,确保您可以以正常方式 ssh 到此框。确保它是一个 unbuntu 实例(我使用的是 16.04)。

一旦 ssh 进入实例,运行以下命令来更新和安装 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)

以此启动集群(注意 no vm driver 行)

/usr/local/bin/minikube start --vm-driver=none

检查它的启动和运行:

/usr/local/bin/minikube status

对,应该让你运行一个没有额外节点的基本集群:)

如果您想要一个漂亮的仪表板,请执行以下操作(我在此处使用 windows 并在 windows 10 上使用 wsl,如果您愿意,您可以在 mac 或 linux 上执行此操作,但步骤略有不同,但只要您可以遵循基本步骤,例如设置变量你会很酷)

为了在本地机器上查看 gui,您需要运行仪表板并做其他有用的事情,在本地运行 kubectl

请按照此在本地安装 kubectl

在 Windows 上,您可以像这样使用巧克力:

choco install kubernetes-cli

现在使用 scp 从 ec2 实例下载您的 admin.conf 文件,该文件位于 /etc/kubernetes。

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

现在在您的 localbox 上运行它以从本地机器隧道到仪表板

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 主页的指南 另请注意 admin.conf 可能有 localhost 作为服务器地址,它需要是 ec2 实例的地址,并且您需要确保可以从您的 ip 访问该端口ec2 实例的安全组。

如果你卷曲或浏览器,http://localhost:8001/api你应该看到这个或类似的东西:)

{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "192.168.4.60:6443"
    }
  ]
}
于 2018-08-18T22:07:37.830 回答
0

我不确定 EC2 是否允许嵌套虚拟化。如果没有,您可以随时使用 minikube --vm-driver=none。这就是我在运行 virtualbox 有限制的前提下的做法。但我不得不承认,没有很多关于在没有 vm 的情况下使用 minikube 的好的文档。我没有亲自尝试过,请查看 canonical 的 lxd。
https://kubernetes.io/docs/getting-started-guides/ubuntu/local/

于 2018-08-18T23:07:50.877 回答
0

去这里:https ://github.com/scholzj/aws-minikube

我在 t2.small 上运行它,但这很困难,您必须从基础架构部署中删除资源请求。使用保留实例,我每月大约需要 14 美元。使用 GCP 可能更有意义,因为他们慷慨地为 master 付费。

于 2018-08-19T00:45:03.877 回答
0

考虑为开发/测试目的提供轻量级 Kubernetes 集群的工具,例如:

于 2019-06-24T17:21:01.120 回答