• 欢迎访问LLYCLOUD information technical share center (ITSC),Linux 安全,Linux 系统,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入LLYCLOUD QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏LLYCLOUD ITSC吧

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!

vmware Akide_Liu 1个月前 (10-13) 49次浏览 0个评论
文章目录[隐藏]

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!

在本文中,我们将介绍两个工作流程,一个是从Cloud / Platform Operator的角度出发,另一个是如何创建新的PKS集群,以了解开发者如何使用它,而这仅仅是访问Kubernetes API端点而没有必须了解有关它是如何配置的,甚至是对基础PKS基础结构的访问的任何信息。我认为你们中的大多数人可能一直在等待本系列文章的这一部分,以了解PKS的实际运行,并演示管理和使用K8S集群是多么容易。

目录:

步骤1-在云/平台运营商可以连接到PKS之前,我们需要首先在PKS的用户身份验证和授权(UAA)系统中创建一个新用户。可以使用UAA系统从外部目录服务(例如LDAP)连接并授权用户。但是,出于目的,我将使用PKS本地创建的帐户。为此,SSH到您的PKS Client VM,并使用uaac CLI配置PKS UAA端点。如果您在第5部分的第7步中还记得,我们定义了端点uaa.primp-industries.com的DNS名称,该名称应指向我们的PKS控制平面VM。运行以下命令以指定PKS UAA端点:

uaac target https://uaa.primp-industries.com:8443 --skip-ssl-validation

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
步骤2-接下来,我们需要检索UAA Admin凭据,以便我们可以请求身份验证令牌以被授权创建新用户。登录到Ops Manager主页,选择PKS磁贴,然后单击“ 凭据”选项卡。打开“ Uaa Admin Secret ”链接,并记下将在下一步中使用的密码。

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
第3步 -运行以下命令,并指定从上一步中检索到的凭据:

uaac token client get admin -s s4v38HVRFHXU0fTTFPATtT7cB5xvL-EV

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
步骤4-如果成功,我们现在可以通过运行以下命令来指定用户名,电子邮件和密码来创建新的PKS用户:

uaac user add lamw --emails [email protected] -p VMware1!

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
第5步 -PKS当前仅支持可以分配给特定用户的两个角色:

  • pks.clusters.admin – Can create PKS Clusters and can see all PKS Clusters created by other users
  • pks.clusters.manage – Can create PKS Clusters and can only see PKS Clusters that they have created

运行以下命令,将pks.clusters.admin角色分配给  刚创建的新用户:

uaac member add pks.clusters.admin lamw

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
第6步 -为了向云/平台运营商提供对PKS设置过程的可见性,这对于进行故障排除/调试很有用,可以使用BOSH CLI。要获得访问权限,您将需要使用已登录Ops Manager的用户对Ops Manager进行身份验证以及引用其证书。运行以下命令,并替换Ops Manager的主机名或IP以及用于登录的用户名/密码:

om --target https://pks-opsmgr.primp-industries.com -u lamw -p 'VMware1!' -k curl -p /api/v0/certificate_authorities -s | jq -r '.certificate_authorities | select(map(.active == true))[0] | .cert_pem' > /root/opsmanager.pem

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
如果命令成功执行,则应该在PKS Client VM中的/root/opsmanager.pem下看到存储的Ops Manager证书。

接下来,运行以下命令以请求随您的Ops Manager凭据提供的BOSH票证:

om --target https://pks-opsmgr.primp-industries.com -u lamw -p 'VMware1!' -k curl -p /api/v0/deployed/director/credentials/bosh2_commandline_credentials -s | jq -r '.credential'

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
如果请求成功,您将看到与上面类似的输出,其中包含在使用BOSH CLI之前需要设置的环境变量列表。

步骤7-运行以下命令以导出四个BOSH环境变量(替换为您在自己的控制台输出中看到的环境变量)。

export BOSH_CLIENT=ops_manager
export BOSH_CLIENT_SECRET=B-KhvNkvco1oJYRThfgQEyP39BAjAbB2
export BOSH_CA_CERT=/root/opsmanager.pem
export BOSH_ENVIRONMENT=172.30.51.31

注意:对于 BOSH_CA_CERT值,请确保对其进行更新,而不是使用控制台输出中显示的值,使其指向  /root/opsmanager.pem,这是我们从步骤6下载的Ops Manager证书。

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
步骤9-要验证您可以连接到BOSH,请运行以下命令,您应该看到PKS Control Plane VM,如以下输出所示:

bosh vms

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
如果无法连接,则可能没有在步骤7中配置正确的BOSH环境变量,或者在步骤6中没有获取Ops Manager的SSL证书。

步骤10-现在,我们可以使用在步骤4中创建的用户身份登录到PKS端点,方法是运行以下命令并指定您的PKS API端点以及用户名和凭据:

pks login -a uaa.primp-industries.com -u lamw -p VMware1! -k

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
至此,我们现在准备部署我们的第一个PKS群集!

PKS / K8S集群部署

在本节中,我们现在将从云/平台运营商的角度逐步介绍工作流程,该运营商将提供新的PKS集群。作为部署的一部分,PKS将自动设置一个新的Kubernetes(K8S)集群,然后将其提供给其开发人员进行使用。

步骤1-您将需要提供名称以标识PKS群集,将被映射到友好DNS条目的外部主机名,计划大小和K8S工作节点的数量。在我们的示例中,我们将命名我们的PKS群集 k8s-cluster-01,将外部主机名命名为pks-cluster-01(一旦PKS完成部署并提供分配的IP地址,我们将需要将其添加到我们的DNS服务器中),通过运行以下命令,计划将很小,工作节点数将为3

pks create-cluster k8s-cluster-01 --external-hostname pks-cluster-01 --plan small --num-nodes 3

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
使用BOSH CLI,我们可以在部署和配置K8S集群时运行以下命令来监视活动任务:

bosh task

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
如您所见,对于我的部署,大约需要21分钟才能完成,其中包括自动配置和关联NSX-T对象以及部署3节点Kubernetes集群。如果你问我,真是太滑了!?部署完成后,如果可以转到我们的vCenter Server,您应该会看到已配置的4个新VM,它们构成了我们的新K8S群集。您将有一个主节点和三个工作节点(根据我们的部署请求定义)。与其他PKS管理VM相似,您可以通过查看每个VM 的instance_groupjob自定义属性属性来轻松识别节点类型。

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
步骤2-  要查看PKS已配置的所有K8S群集,可以运行以下命令:

pks clusters

我们可以看到k8s-cluster-01,如果我们查看Status字段,它显示成功,这意味着我们的开发人员可以使用它并立即开始部​​署应用程序。

要检索K8S主IP地址,以便我们可以为pks-cluster-01添加DNS条目,请运行以下命令并指定PKS群集的名称:

pks cluster k8s-cluster-01

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
我们可以看到,PKS已将我们的10.10.0.0/24范围的IP分配给K8S管理集群网络。现在,我们可以为pks-cluster-01添加一个DNS条目,这将是我们的开发人员用来连接到K8S群集的友好名称。在我的示例中,pks-cluster-01.primp-industries应该解析为10.10.0.2,对于正确的正向和反向DNS,反向也应为true。

步骤3-  将K8S集群移交给开发人员之前的最后一步是从PKS中检索K8S集群的凭据。结果是开发人员已经熟悉的K8S客户端配置文件,其中包含有关K8S群集的信息以及要连接的证书详细信息,不需要密码,这使得管理PKS群集非常简单。运行以下命令并指定PKS群集的名称以检索凭据:

pks get-credentials k8s-cluster-01

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
命令完成后,它将存储K8S群集凭据并将其附加到~/.kube/config ,如上面的屏幕快照所示。然后,您可以将此配置文件以及PKS群集的主机名(也编码在配置文件中)提供给您的开发人员,然后他们可以使用K8S CLI(kubectl)进行连接。如果您不小心删除了此文件,或者开发人员需要再次请求它,则只需重新运行以上命令,它将从PKS中检索详细信息。无需备份或保留此文件,因为始终可以使用PKS CLI或API对其进行检索。

如您所见,仅需两个简单的PKS命令,云/平台操作员即可快速,轻松地部署多个PKS集群,并将其提供给其开发团队以开始部署其应用程序。

应用部署

在本节中,我们现在将从开发人员的角度出发,逐步浏览工作流程,开发人员将使用新的K8S群集,并能够使用他们选择的标准工具K8S CLI(kubectl)开始部署他/她的应用程序。假设您是一名开发人员,而您刚刚构建了最热门的企业应用程序Yelb(实际上这是由我们的好朋友Massimo Re Ferre’Andrea Siviero构建的演示应用程序),其中包含以下四个服务:UI前端,应用程序服务器,数据库使用Redis的服务器和缓存服务。

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
这些已打包为Docker容器,您希望能够将这个热门的新应用程序快速部署到生产环境,而不必担心单个容器的部署,因此这就是为什么您更喜欢K8S的原因,K8S是一个强大的容器调度程序平台,可用于您。幸运的是,我们的云/平台运营商能够快速为我们提供新的K8S集群,并且还向我们提供了K8S配置文件和端点,以便我们可以立即部署我们的应用程序。

注意:出于演示的目的,我们将继续使用相同的PKS Client VM和相同的用户帐户,因为它已经可以访问K8S客户端配置文件kubectl CLI。实际上,使用K8S群集的用户将是您的开发人员,并且他/她将从自己的工作站登录,并且不需要访问任何PKS基础结构(Ops Manager,BOSH,PKS等),因为他们只是只需通过K8S CLI / API与已部署的K8S群集进行通信。

步骤1-  我们可以运行以下命令来验证是否可以连接到新的K8S群集。我们可以使用此命令查看已配置的K8S工作节点的数量,在我们的示例中为3,足以容纳我们的应用程序。

kubectl get nodes -o wide

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
第2步 -让我们创建一个新的K8S命名空间,以帮助将我们的新项目与其他项目分开。将名称空间与PKS一起使用的另一个好处是,NSX-T可以在每个名称空间级别上提供网络微分段。这意味着云/平台运营商可以相互隔离应用程序/服务,并实施与NSX-T集成提供的精细网络和安全策略。在此示例中,我们将通过运行以下命令来调用新的名称空间Yelb:

kubectl create namespace yelb

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
第3步 -现在,我们需要创建一个K8S部署规范,以描述我们希望如何连接和部署应用程序。我已经创建了一个名为yelb.yaml的工作版本,您可以在此处下载该版本并将其传输到PKS Client VM。如果查看YAML文件,则可以看到对在第2步中创建的命名空间的引用以及将要使用的四个Docker容器。如果未在规范中指定名称空间,则在部署应用程序时,它将使用“默认”名称空间。

注意:  确保您的K8S管理群集网络可以访问Internet,以便能够远程下载所需的Docker映像。

步骤4-要使用我们的部署规范来部署我们的应用程序,只需运行以下命令并指定您从上一步下载的YAML文件:

kubectl apply -f yelb.yaml

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
步骤5-部署开始后,我们可以运行以下命令来监视由“ STATUS”属性表示的K8S Pod创建过程。成功创建并运行所有四个Pod之后,您可以按CTRL + C退出。

watch -n 1 kubectl get pods --namespace yelb

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
在部署期间,需要下载所需的Docker容器,这可能需要一些时间,具体取决于容器的大小和Internet连接的速度。对于我的设置,所有四个容器都已启动并运行了大约6分钟。

步骤5-现在我们的应用程序已成功部署,我们需要确定哪个K8S Worker Nodes托管了我们的UI前端,以便我们可以使用浏览器访问该应用程序。为此,我们需要首先为我们的yelb-ui获取唯一的Pod名称,您可以通过运行以下命令来做到这一点:

kubectl get pods --namespace yelb

从屏幕快照中可以看到,在我们的示例中,UI Pod名称为yelb-ui-57ccb9d965-ntx7j(这在您的环境中将有所不同)。

接下来,我们运行以下命令并指定您的UI Pod名称的名称,以检索有关此Pod的更多详细信息:

kubectel describe pod yelb-ui-57ccb9d965-ntx7j --namespace yelb

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
在输出中,查找“ Node ”属性值。在我们的示例中,它显示了IP地址10.10.0.5,并且在我们的K8S部署规范中定义的端口是30001。

步骤6-要访问我们的应用程序,请继续并打开Web浏览器,以使用上一步中找到的IP地址并使用端口30001。如果一切都已正确设置和部署,我们应该会看到新的Yelb应用程序启动,如屏幕截图所示。下面。您可以添加一些投票以查看该应用程序的运行情况,以及重新加载页面以行使Masssimo和Andrea内置于此演示中的其他功能。

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
至此,您已经成功将第一个应用程序部署到了PKS管理的K8S集群上!

但是,将特定的K8S工作节点公开给依赖NAT的访问不是一般的最佳做法,尤其是当我们需要根据需求扩展或缩减应用程序时。在K8S中,您可以指定要使用外部负载平衡器作为应用程序部署规范的一部分,该负载平衡器用于应用程序服务(在本例中为UI服务)的前面。在部署期间,PKS将看到此请求并自动配置NSX-T负载平衡器,并使用适当的防火墙规则等将虚拟服务器添加到池中,所有这些操作都无需与我们的云/平台运营商进行交互。让我们来看看这一点。

步骤7- 在此处下载称为yelb-lb.yaml  文件的负载均衡器K8S部署规范。

如果比较两个YAML文件,我们可以看到的唯一区别是添加了LoadBalancer类型,该类型将指示K8S请求负载均衡器。

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
步骤8-让我们继续执行以下命令,部署新的Yelb应用程序,该应用程序将包含负载均衡器:

kubectl apply -f yelb-lb.yaml

步骤9- 部署新应用程序后。我们可以通过运行以下命令来检索负载均衡器IP地址:

kubectl get services --namespace yelb

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
我们可以看到,现在可以从10.20.0.16访问yelb-ui前端,它是从我们在NSX-T配置期间配置的负载均衡器IP池中配置的IP。

步骤10-最后,让我们继续,通过打开浏览器到负载均衡器IP地址来验证我们现在可以访问我们的应用程序,可以从下面的屏幕截图中看到它。显然,对于生产部署,您需要为此IP地址添加一个DNS条目,以便最终用户可以使用友好名称而不是IP来访问应用程序。太棒了!

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
我们花了一些时间来开发我们的开发人员,我想我们可以说,他们对使用PKS管理的K8S集群是如此容易感到非常满意。他们不必更改任何现有的工作流程或工具,实际上,他们甚至还受益于与NSX-T集成提供的其他网络和安全策略。在任何时候,可能会在许多PKS管理的K8S集群上部署数十个应用程序,并且从云/平台运营商的角度来看,他们的工作再容易不过了,因为它们提供了真正的自助服务平台。如前所述,新的按需K8S Pod网络,逻辑交换机,负载均衡器,防火墙规则等的创建均由NSX-T动态提供,而使用者与平台运营商之间无需任何用户交互。

以下是NSX-T的一些屏幕截图,显示了按需配置的T1路由器和逻辑交换机,这些按需配置由各个K8S名称空间组成。我们还可以看到开发人员应用程序部署规范中要求的负载均衡器,并且作为部署工作流的一部分,各个K8S节点已自动添加到虚拟服务器池中。

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!

开发人员可能想要使用的另一个有用工具是K8S仪表板UI,它为给定的K8S集群提供图形界面。如果您想连接到该界面,请参阅下面的博客文章以了解详细信息。

退出K8S集群

当开发人员完成他们的K8S集群的工作并希望返回资源时,删除K8S集群只是一个命令。

在当前版本的PKS中,我应该注意的一件事是,删除PKS群集后,不会自动清除NSX-T对象。这将在下一发行版中解决,并且不需要其他用户交互。目前,Cloud / Platform Operator将仅使用我们在第2部分中设置的nsx-cli.sh脚本来清理KXS删除工作流程中的NSX-T对象。您可以轻松地批量处理或自动化此部分,以在短期内简化流程。

步骤1-一旦确定要删除的PKS群集,请通过运行以下命令记录UUID:

pks cluster[NAME-OF-PKS-CLUTER]

如果您不记得或只想列出所有PKS群集,请运行以下命令:

pks clusters

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
步骤2-接下来,我们将使用PKS delete-cluster操作取消配置群集,并且将通过BOSH删除VM。

pks delete-cluster [NAME-OF-PKS-CLUTER]

步骤3 (在将来的PKS版本中不需要)-您将需要设置以下环境变量,其中包含您的NSX-T安装的凭据。这样做,请运行以下命令并将其替换为您自己的部署信息:

export NSX_MANAGER_IP="nsx-mgr.primp-industries.com"
export NSX_MANAGER_USERNAME="admin"
export NSX_MANAGER_PASSWORD="VMware1!"

步骤4  (在以后的PKS版本中不需要)-成功删除PKS群集后,您可以运行以下命令并提供从步骤1中检索到的UUID,以清理与此PKS相关的所有NSX-T对象簇:

./nsx-cli.sh cleanup [PKS-UUID} false

VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
如果您了解如何删除PKS群集但忘记记下PKS UUID,还可以通过查看任何NSX-T对象(例如T1路由器,逻辑交换机,防火墙规则等)来找到UUID。它们将嵌入UUID作为标签的一部分,如果使用,则NSX-T不会删除该对象,因此可以放心确保不会删除错误的对象。这只是暂时的解决方法,因为它将在下一版本的PKS中修复,并且在删除PKS集群时,NSK-T对象的预配置将由PKS自动处理。

在下一篇文章中,我们将介绍如何将PKS与VMware Harbor集成,后者是一个开源的企业级Container Registry,可以在您自己的数据中心中运行,可以用来存储和管理对您软件的访问开发人员正在创造。


Llycloud ITSC , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:VMware Pivotal容器服务(PKS)入门第6部分:Kubernetes Go!
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址