如何在Vagrant的CoreOS上安装Kubernetes
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