如何在Vagrant的CoreOS上安装Kubernetes

时间:2020-03-05 15:27:58  来源:igfitidea点击:

CoreOS容器Linux是一个使用容器安装所有应用程序的操作系统,没有像RPM或者APT这样的软件包管理器。
与Ubuntu和CentOS一起,它是用于部署Kubernetes的流行平台之一。
我们将使用Vagrant在CoreOS上设置Kubernetes。

安装依赖项

我们需要Virtual Box,Vagrant和Git作为依赖项。
因此,让我们安装它们。
我的工作站上安装了fedora,因此命令如下:

sudo dnf install VirtualBox vagrant git

对于VirtualBox,我们需要启用RMPfusion。
如果我们使用的是Ubuntu,则可以输入以下命令

sudo apt install virtualbox vagrant git

本教程的其余部分与发行无关。

如何安装kubectl

在本地计算机上,我们还需要安装kubectl,以管理将在Virtual Box中作为一组VM创建的群集。
使用此命令可获得kubectl 1.5.2,它是本文撰写时的最新版本。

curl -O https://storage.googleapis.com/kubernetes-release/release/v1.5.2/bin/linux/amd64/kubectl

接下来,我们需要为刚刚下载的kubectl二进制文件添加可执行位

chmod +x kubectl

然后将其移动到路径中的某个目录中

sudo mv kubectl /usr/local/bin/kubectl

建立集群

接下来,克隆具有Vagrantfile的存储库,我们需要启动集群

git clone https://github.com/coreos/coreos-kubernetes.git

下一步移动到包含Vagrantfile的子目录

cd coreos-kubernetes/multi-node/vagrant/

在那里,我们将需要使用模板(即config.rb.sample)来创建config.rb文件,当我们启动集群时,该文件将由vagrant 读取。

cp config.rb.sample config.rb

现在,当我们这样做时,让我们对其进行编辑。

nano config.rb

在文件中,我们需要取消注释一些行

$update_channel="alpha"
$controller_count=1
#$controller_vm_memory=512
$worker_count=3
#$worker_vm_memory=1024
$etcd_count=1
#$etcd_vm_memory=512

如果应用程序需要更多资源,请随时取消注释所有行,并增加分配的内存的大小。
但是,请确保工作站具有足够的内存。

之后,我们准备启动集群。

vagrant up --provider=virtualbox

这可能需要一些时间,具体取决于插入连接和I/O的速度。
完成后,我们将需要设置kubectl的上下文来管理VM中的集群

export KUBECONFIG="${KUBECONFIG}:$(pwd)/kubeconfig"
kubectl config use-context vagrant-multi

完成此操作后,我们可以使用以下命令查找节点

kubectl get nodes

请注意,初次尝试此命令可能不起作用。
相反,我们可能会收到一条错误消息,提示拒绝连接并询问我们是否指定了正确的端口号。
这是因为Vagrant需要花费一些时间来引导和连接集群。
请等待几分钟,然后重试。

部署应用程序

将应用程序部署到这个新创建的集群很简单。
我们将使用与CentOS和Ubuntu相同的袜子店应用程序。

kubectl create namespace sock-shop

上面的命令创建了一个sock-shop命名空间,下面的命令将安装应用程序:

kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"

现在我们检查Pods

[miki@latitude-e5470 vagrant]$kubectl get pods
No resources found.

这是什么?
没有Pods?
当然,当我们将它们全部放入名为sock-shop的名称空间时,就没有Pods了。
因此,此命令将使我们获得Pods

kubectl get pods -n sock-shop

它们很多,我们可能需要等待一段时间才能全部部署。

在浏览器中访问应用程序

可以使用任何浏览器从工作站访问应用程序。
为此,我们需要知道应用程序使用的主节点的IP地址和端口。
首先,我们使用已知的命令

[miki@latitude-e5470 vagrant]$kubectl get nodes
NAME STATUS AGE
172.17.4.101 Ready,SchedulingDisabled 3h
172.17.4.201 Ready 3h
172.17.4.202 Ready 3h
172.17.4.203 Ready 3h

首先是主人,所以我要寻找的地址是172.17.4.101.
到此地址,我们还需要添加前端容器的端口。

[miki@latitude-e5470 vagrant]$kubectl describe svc front-end -n sock-shop
Name: front-end
Namespace: sock-shop
Labels: name=front-end
Selector: name=front-end
Type: NodePort
IP: 10.3.0.163
Port: <unset> 80/TCP
NodePort: <unset> 30001/TCP
Endpoints: 10.2.38.8:8079
Session Affinity: None
No events.

在我的情况下是30001端口。
所以我们要寻找的地址是http://172.17.4.101:30001

如何从群集中删除应用程序

如果要从群集中删除应用程序(例如为新应用程序腾出空间),也很容易做到。
我们只需删除我们放置应用程序的名称空间。
像这样

kubectl delete namespace sock-shop

如果要删除整个群集并释放工作站的内存进行一些新工作,请使用以下命令进行操作

[miki@latitude-e5470 vagrant]$vagrant destroy -f