就喜欢用vSphere部署K8s集群,不全是因为自动化!

通过努力,我们有了一个完整配置的工作负载域,其中包括一个NSX-T Edge部署。现在,我们准备继续使用Kubernetes 部署vSphere。通过VMware Cloud Foundation 4.0中的SDDC Manager,我们确保NSX-T Edge可用,并且还确保Workload Domain获得了足够的许可以启用带有Kubernetes的vSphere。

为清楚起见,本文基于GA Cloud的VMware Cloud Foundation 4.0之前版本。尽管人们认为在撰写本文至产品上市之间应该没有太大变化,但我希望读者意识到在此之前功能行为和用户界面仍可能会发生变化。

验证工作负载域

该过程的第一步是验证工作负载域是否可以通过Kubernetes支持vSphere。SDDC管理器现在有一个名为“解决方案”的新部分。当前,有一个名为Kubernetes的解决方案–工作负载管理。首先,显然没有创建工作负载管理解决方案:

单击部署链接以开始。显示的第一个窗口是先决条件–您需要正确的许可证版本,带有NSX-T Edge群集和各个子网的已配置的基于NSX-T的工作负载域,其中两个必须进行路由(对于Ingress和Egress)。

选择以上所有条件后,我们就可以开始工作负载管理部署了。在“群集”部分中,选择工作负载域。如果存在兼容性问题,群集将不会显示在“兼容”部分中。相反,它将显示在不兼容部分中。不兼容视图还将显示群集不兼容的原因。在下面的屏幕截图中,我的WLD没有得到适当的许可,因此与带有Kubernetes的vSphere不兼容。

解决不兼容的原因后(例如,将正确的许可证版本应用于VI WLD),WLD将出现在“兼容”部分,您可以继续进行验证步骤。

现在,我们将进行全面验证,以确保凭据,资源和网络都存在,并且可用于使用Kubernetes推出vSphere。

验证了使用Kubernetes的vSphere的要求后,我们可以连接到vSphere环境以完成使用Kubernetes的vSphere设置。单击在vSphere中完成按钮:

vSphere与Kubernetes部署

单击“在vSphere中完成”按钮后,将启动vSphere Client,然后我们将其置于启用工作负载管理的起点。总共有5个步骤。第一步是选择一个vSphere群集,因为同一VI Workload Domain中可能存在多个群集。在此示例中,只有一个,因此我们选择它。

选择集群后,下一步是在“集群设置”中选择控制平面的大小。换句话说,将哪些资源分配到Supervisor Kubernetes Cluster Master虚拟机。

Project Pacific是带有Kubernetes的vSphere的原始名称。

出于可用性目的,提供了3个主服务器,称为“主管控制平面VM”。对于带有Kubernetes的vSphere,工作节点是集群中的ESXi主机。

下一步是提供控制平面主节点和工作负载网络的各种IP范围(例如Pod和Services)的网络详细信息。Pod和Service CIDR不需要是可路由的,但Ingress和Egress当然可以。在先决条件中,它声明入口和出口都至少需要/ 27 CIDR。这是32个IP地址的连续范围。请注意,在我的实验室测试中,我能够使用带有/ 28(仅16个IP地址)的Kubernetes部署vSphere。在部署时,立即创建了12条SNAT规则,因此/ 28仅可用于最基本的部署。每个新名称空间也将需要一个SNAT,因此最多只能有2个名称空间。要在带有Kubernetes的vSphere上做一些有用的事情,您肯定需要/ 27 CIDR,至少对于出口而言。

下一步是为带有Kubernetes的vSphere选择所需的各种磁盘的存储策略。基本上,您在此步骤中要做的是为控制平面节点磁盘,临时(临时)磁盘和图像缓存选择存储策略。

单击“选择存储”时,将显示可用存储策略列表。只需选择您要用于特定存储类型的存储。

最后,检查选择并完成。这将开始使用Kubernetes部署vSphere。

可以从vSphere Client监视进度,尤其是“最近”任务。

现在有很多动作在发生。其中一些任务包括但不限于:

     部署3个主VM / Supervisor控制平面VM
     在NSX-T中为整个K8s服务阵列创建一组SNAT规则(出口)
     在NSX-T中为K8s控制平面创建负载均衡器(入口)
     在ESXi主机上安装Spherelet,以便它们充当Kubernetes辅助节点

从NSX-T中,我们可以看到12个SNAT规则:

如前所述,一旦您开始构建名称空间,就会创建一个新的SNAT规则。因此,在部署时正确设置Egress CIDR非常重要,否则您很快就会用完地址。

我提到过,还创建了一个负载均衡器–用于多主控平面API服务器。我们可以连接到LB虚拟IP地址,而不是连接到单个主机。这意味着,如果任何控制平面虚拟机存在问题,将不会引起注意。与API服务器的连接将直接重定向到后端的其他控制平面主机。这是在我的环境中用于控制平面的入口/负载平衡器IP地址:

您可以从vCenter Server上名为wcpsvc.log的日志文件中监视所有带有Kubernetes的vSphere部署活动。我通常让tail命令运行以查看详细活动:

root@vcsa-04 [ ~ ]# cd /var/log/vmware/wcproot@vcsa-04 [ /var/log/vmware/wcp ]# ls -l
total 18532
-rw------- 1 root root   23102 Mar 20 09:00 gcm-telemetry
-rw-r--r-- 1 root root 9445965 Mar 20 09:02 nsxd.log
-rw------- 1 root root     111 Mar 19 11:05 stdstream.log-0.stderr
-rw------- 1 root root      42 Mar 19 11:05 stdstream.log-0.stdout
-rw------- 1 root root    1865 Mar 19 04:06 stdstream.log-1.stderr
-rw------- 1 root root      42 Mar 18 16:06 stdstream.log-1.stdout
-rw------- 1 root root    3719 Mar 20 08:25 stdstream.log.stderr
-rw------- 1 root root      42 Mar 19 12:20 stdstream.log.stdout
-rw-r--r-- 1 root root  778392 Mar 19 12:09 wcpsvc-2020-03-19T12-09-03.220.log.gz
-rw-r--r-- 1 root root 8687263 Mar 20 09:03 wcpsvc.logroot@vcsa-04 [ /var/log/vmware/wcp ]# tail -f wcpsvc.log

如果一切都按计划进行,则应该在vSphere Client和SDDC Manager>解决方案>工作负载管理中都看到部署完成:

在vSphere客户端中,如果我们导航到vSphere UI中的``工作负载管理>命名空间'',则会看到一条消息,指出工作负载管理已成功部署,并且现在可以通过在Supervisor群集上创建命名空间和其他Kubernetes对象来开始工作了。这些可以是您的典型Kubernetes对象(例如Pod,Deployments,StatefulSets),也可以是其他事物,例如Tanzu Kubernetes Grid(TKG)Guest Kubernetes集群的完整部署。

 希望这篇文章显示了VMware Cloud Foundation 4.0中如何实现自动化配置、验证和部署基础架构,这些基础架构有助于使用Kubernetes轻松部署vSphere。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同源策略_如何支持跨域

欢迎大家阅读《朝夕Net社区技术专刊》我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦!01PARTCoreWebApi的调用1.在Core MVC下建立…

企业数字化转型解决方案

2020年国务院常务会议明确指出,依托工业互联网促进传统产业加快上线上云。此前,工信部也在全国工业和信息化工作会议上表示,2020年要实施“5G工业互联网”512工程。和5G、人工智能等同列的“新基建”,工业互联网成为数字时代的基础…

网站 asp和php的用途,asp和php都有什么功能?

ASP是什么?有什么功能?ASP.NET是微软开发,建立动态的,强大的,智能的、可扩展的网站和网际网络应用的全功能的程序语言如C或VB.NET #。它包括一个强大的安全评估的亮点,以及一个组织的小工具,可以…

ASP.NET Core 3.x - Endpoint Routing 路由体系的内部机制

Endpoint是什么?Endpoint简单的可以理解为这样的一些类,它们包含一个请求的委托(Request Delegate)和其它的一些元数据,使用这些东西,Endpoint类可以生成一个响应。而在MVC的上下文中,这个请求委…

java获取主机信息大全,网络编程:Java获取网络主机信息

java.net.InetAddress类表示互联网协议 (IP) 地址。有两个子类:Inet4Address, Inet6Address通过 InetAddress可以方便获取一个域名下的IP,也可以获取一个IP的主机名。下面是例子,通过程序查看51cto主机的IP信息,51cto是…

【项目升级】单库、多库、读写分离 · 任你选

本期配套视频:https://www.bilibili.com/video/BV1BJ411B7mn?p6(点击阅读原文,可看,如果没有,最晚下午可看)继上周增加【任务调度】以后,继续对项目进行2.0版本升级,其实改动的地方…

.Net微服务实战之技术选型篇

王者荣耀 去年我有幸被老领导邀请以系统架构师的岗位带技术团队,并对公司项目以微服务进行了实施。无论是技术团队还是技术架构都是由我亲自的从0到1的选型与招聘成型的,此过程让我受益良多,因此也希望在接下来的系列博文尽可能的与大家分享…

autohotkey php,Autohotkey+php实现免浏览器听录音

环境说明:Elastix 2.5ln -s /var/spool/asterisk/monitor /var/www/html/接口文件(php):$conmysql_connect("localhost","root","passwd");if(!$con) echo "没有连接成功!";mysql_select_db("asteriskcdrd…

.NET Core开发实战(第32课:集成事件:解决跨微服务的最终一致性)--学习笔记...

32 | 集成事件:解决跨微服务的最终一致性首先看一下集成事件的工作原理它的目的时为了实现系统的集成,它主要是用于系统里面多个微服务之间相互传递事件集成事件的实现方式有两种,一种是图上显示的发布订阅的方式,通过 EventBus&a…

Dapper操作MySQL数据库获取JSON数据中文乱码

在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正。为了引出最终问题出在什么地方,我们重头开始进行…

C++set容器去重法

给出一个10位数&#xff0c;它如果每个位的数都把0-9这10个数都只用了一次&#xff0c;就输出yes&#xff0c;否则输出no #include <iostream> #include <set> using namespace std; set<int>s; typedef long long LL;int main() {LL n;while (cin >>…

流传在程序员中的传说,你知道几个?

在号称从事高薪新 科技工作的程序员周遭流传着许多与他们单纯气质不符的传说在这些被神秘面纱笼罩的人群中即使是从事着同一工种都有着许许多多科学无法解释的差异老程序员们对此讳莫如深新程序员们却有时感到惶恐不安...这背后究竟是道德的扭曲还是人性的沦丧倒是都并不至于只…

C++关于getline()和getchar()的小点

getchar只能“吃”一个字符&#xff0c;而getline可以“吃”一行字符 代码如下: #include <iostream> #include <cstring> using namespace std;int main() {char c;cin>>c;string line;getline(cin,line);cout<<c<<endl;cout<<line<…

谁说docker-compose不能水平扩展容器、服务多实例?

❝虽说我已经从docker-compose走上了docker swarm的邪门歪道&#xff0c;目前被迫走在k8s这条康庄大道&#xff0c; 但是我还是喜欢docker-compose简洁有效的部署方式。❞曾其何时docker-compose非常适合开发、测试、快速验证原型&#xff0c;这个小工具让单机部署容器变得简洁…

.NET Core开发实战(第33课:集成事件:使用RabbitMQ来实现EventBus)--学习笔记(上)...

33 | 集成事件&#xff1a;使用RabbitMQ来实现EventBus这一节我们来讲解如何通过 CAP 组件和 RabbitMQ 来实现 EventBus要实现 EventBus&#xff0c;我们这里借助了 RabbitMQ&#xff0c;它的整个安装和使用的体验是非常人性化的&#xff0c;如果是在 Windows 下开发的话&#…

nginx php iconv,Nginx +PHP部署一

Nginx PHP部署一Alvin.zeng目录一、安装PHP1、Yum安装需要的包yum -y install gcc gcc-c autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurs…

以Blog.Core的方式来打开Abp.vNext

&#xff08;发现Abp这个logo真像佐助写轮眼&#xff09;最近自己的框架已经基本的成型了&#xff0c;当然还有很多质疑的地方&#xff0c;比如这些人是这么说的&#xff0c;基本都是原文&#xff1a;你的教程太乱了&#xff0c;和框架代码都不一样&#xff08;&#xff1f;&am…

算法题目中常见的几种输入小点-gets,cin,scanf,getline,sstream

cin,scanf遇到空格都会停下来。gets可读入空格 例如: 在这里由于要读入空格&#xff0c;我们用gets来读入。 const int N 8; char g[N][N];while(gets(g[0])!NULL) {gets(g[1]);}C关于getline()和getchar()的小点C stringstream输入方式下面这两段代码要注意一下: const in…

如何做好一个开源项目(一)

做好一个开源项目其实是一件比较费时费力费心的工作&#xff0c;它的最大难点除了代码维护之外&#xff0c;还包括后期的维护和持续的跟进。我曾经做过不少开源项目&#xff0c;但是坚持下来的&#xff0c;目前有信心能够持续维护的也只有Magicodes.IE。这里请允许我来一波硬广…

Abp商业版 - Identity Server模块

该模块提供了Identity Server的集成和管理功能.建立在IdentityServer4类库之上.管理系统中的客户端,身份资源和API资源(Clients, Identity resources, API resources)设置客户端(Clients)权限.轻松创建标准的身份资源(例如role, profile)创建自定义身份资源(identity resources…