3

一文搞定完整的云原生边缘基础设施堆栈

 3 years ago
source link: http://dockone.io/article/2434283
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

作者简介


Janakiram MSV是Janakiram & Associates的首席分析师,也是国际信息技术学院的兼职教师。他也是Google Qualified Developer、亚马逊认证解决方案架构师、亚马逊认证开发者、亚马逊认证SysOps管理员和微软认证Azure专业人员。


Janakiram是云原生计算基金会的大使,也是首批Kubernetes认证管理员和Kubernetes认证应用开发者之一。他曾在微软、AWS、Gigaom Research等知名公司工作。

在之前的文章中,我们了解了云原生边缘计算堆栈的核心构件:K3s、Project Calico和Portworx。

本篇教程将带你了解在边缘集群上安装和配置这一软件,该集群是一组运行Ubuntu 18.04的英特尔NUC迷你电脑。这种基础设施可用于在边缘运行可靠、可扩展和安全的AI和IoT工作负载。

为Calico自定义K3s安装

默认情况下,K3s使用Flannel作为容器网络接口(CNI)运行,使用VXLAN作为默认后端。在本文中,我们将用Calico代替它。

要将K3s与网络堆栈Calico集成起来,我们需要自定义安装以启动CNI支持。

请注意在边缘你至少需要3个节点运行在K3s集群上以保证高可用。

在第一个指定为服务器的节点上,运行以下命令:

export K3S_TOKEN="secret_edgecluster_token"

export INSTALL_K3S_EXEC="--flannel-backend=none --disable=traefik --cluster-cidr=172.16.2.0/24 --cluster-init"

curl -sfL https://get.k3s.io | sh -

如果在你的网络中172.16.2.0/24已经被占用,那么你必须选择一个不同的pod网络CIDR来代替上述命令中的172.16.2.0/24。

在其余server节点上,运行以下命令。请注意,我们在安装程序中添加--server开关,将其指向第一个节点的IP地址。

export K3S_TOKEN="secret_edgecluster_token"
export INSTALL_K3S_EXEC="--flannel-backend=none --disable=traefik --cluster-cidr=172.16.2.0/24 --server https://10.0.0.60:6443"
curl -sfL https://get.k3s.io | sh -


运行以下命令配置worker节点或agent:

export K3S_URL=https://10.0.0.60:6443
export K3S_TOKEN="secret_edgecluster_token"
curl -sfL https://get.k3s.io | sh -


使用K3s server的IP地址代替K3S_URL

这一步结束之后,你应该拥有一个带有4个节点的集群。

由于网络尚未配置,因此没有一个节点是ready的。只要我们将Calico specs应用到集群,这些节点的状态将会变成ready。

图片

在进行下一步之前,先从其中一个server节点复制/etc/rancher/k3s/k3s.yaml到你的本地工作站并将KUBECONFIG环境变量指向它。别忘了在YAML文件中更新master URL。这提供了通过kubectl CLI对K3s集群的远程访问。

在多节点K3s集群上安装Calico

我们将通过下载Calico manifests并修改它们来启动:

wget https://docs.projectcalico.org/manifests/tigera-operator.yaml

wget https://docs.projectcalico.org/manifests/custom-resources.yaml

在K3s安装过程中,打开custom-resources.yaml文件并更改CIDR到与上文提到的相同的IP地址段。

应用两个manifest为K3s集群配置Calico网络

kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml


几分钟内,集群状态将变为ready

图片

最后,在calico-system命名空间中修改cni-config configmap以启用IP转发:

kubectl edit cm cni-config -n calico-system

改变以下所示的值,启用IP转发:

"container_settings": {
"allow_ip_forwarding": true
}


验证Calico是否启动并使用以下命令运行:

kubectl get pods -n calico-system

在这里插入图片描述

在K3s上安装Portworx

Portworx 2.6及以上版本支持K3s,安装流程与其他Kubernetes发行版并无差异。如果你不太了解,可以根据以下链接中的教程安装Portworx:

https://thenewstack.io/tutoria ... ster/

如果你手边没有etcd集群,你可以在PX-Central安装向导中选择内置的KVDB。

图片

我选择了附加到每个主机的NVMe磁盘作为存储选项。你可以根据你的存储配置进行修改。

图片

K3s最重要的前提条件之一是支持CSI,所以请确保你在最后一步选择了Enable CSI选项。

在这里插入图片描述

复制规范并将其应用到你的集群中

图片

几分钟内,在K3s上的Portworx集群将会启动并运行:

kubectl get pods -l name=portworx -n kube-system

在这里插入图片描述

CSI驱动作为一个sidecar连接到DaemonSet中的每一个Pod,这就是为什么我们在Pod中看到两个容器。

SSH进入其中一个节点,用下面的命令检查Portworx集群状态。

sudo /opt/pwx/bin/pxctl status

图片

我们现在已经拥有了一个基于K3s、Calico和Portworx的边缘基础设施,并且配置完整。在下一篇文章中,我们将部署一个运行在边缘的AIoT工作负载。保持关注哟

原文链接:


https://thenewstack.io/tutoria ... worx/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK