计算机系统应用教程网站

网站首页 > 技术文章 正文

NSX-T——创建k8s群集 k8s创建一个pod的详细流程

btikc 2024-10-10 04:50:56 技术文章 6 ℃ 0 评论

在本系列的上一篇文章中,我们配置并部署了PKS。今天我们将创建一个kubernetes集群。

如果您没有按照本系列文章进行操作,那么我建议您关注后阅读本系列的早期文章。

创建用户

在我们创建K8s集群之前,我们需要创建一个用户。我们使用用户帐户和身份验证(UAA)在PKS中创建和管理用户。我们使用UAA命令行界面(UAAC)与UAA服务器进行交互。您可以从Ops Manager VM运行UAAC命令,要安装UAAC,请运行以下命令:

apt -y install ruby?? ruby??-dev gcc build-essential g ++ 
gem install cf-uaac

由于我们将与PKS API进行通信,因此我们需要在执行安装时生成的证书。在Ops Manager中,单击PKS,然后单击设置选项卡左栏中的PKS API。复制证书然后在跳转时创建一个新文件,其中的内容是刚刚复制的证书。输入我们之前配置的PKS API FQDN。

接下来,我们需要检索PKS UAA管理员凭据。在Ops Manager中,单击PKS磁贴,然后单击Credentials选项卡。单击“ 链接到Credentia l”以获取Pks Uaa Management Admin Client,如下所示。

使用UAA命令行工具,使用PKS API FQDN和PKS API证书来定位我们的PKS API

root@ubuntu:~# uaac target https://fqdn:8443 --ca-cert pks.crt
Target: https://fqdn:8443
Context: admin, from client admin

接下来,使用从上面的Ops Manager检索到的密码登录

root@ubuntu:~# uaac token client get admin -s fy6Ps5gTFDHMQM-KL2MJbIl5HbdQBer5
Successfully fetched token via client credentials grant.
Target: https://fqdn:8443
Context: admin, from client adminch

创建账号

root@ubuntu:~# uaac user add user --emails user@example -p Password
user account successfully added

将新建的用户加入到组,有2个组,分别为pks.clusters.admin(该组用户可以创建和访问所有集群)和pks.clusters.manage (该组用户可以在其中创建和访问自己的集群)

root @ ubuntu:~#uaac member add pks.clusters.admin user
success

创建一个Kubernetes集群

现在我们创建了一个有权创建kubernetes集群的用户。但是我们如何创建一个集群呢?我们使用可从Pivotal下载的PKS CLI 。在那里,还下载Kubectl CLI。每种都有Linux,Windows,MAC风格。将PKS和Kubectl CLI复制到您的服务器。

添加执行权限并移至/usr/local/bin

root@ubuntu:~# chmod +x pks-linux-amd64-1.2.4-build.1
root@ubuntu:~# mv pks-linux-amd64-1.2.4-build.1 /usr/local/bin/pks
root@ubuntu:~# chmod +x kubectl-linux-amd64-1.11.5
root@ubuntu:~# mv kubectl-linux-amd64-1.11.5 /usr/local/bin/kubectl

现在我们在使用PKS CLI,可以使用PKS API FQDN,我们之前创建的用户以及PKS API证书登录。注意,您可以根据需要使用-k而不是-ca-cert <cert>跳过证书验证

root@ubuntu-jump:~# pks login -a fqdn -u user -p Password --ca-cert pks.crt
API Endpoint: fqdn
User: user

现在我们已经过身份验证,让我们创建一个k8s集群。这里我们创建一个名为pks-cluster-1的集群,其kubernetes API将通过pks-cluster-1.fqdn提供,并使用我们在上一篇文章中定义的小计划,即1个master和3个worker默认情况下。worker数量可以由-n,-num-nodes指定,最大为计划中定义的最大值,即50。

root@ubuntu:~# pks create-cluster pks-cluster-1 --external-hostname pks-cluster-1.fqdn --plan small
Name: pks-cluster-1
Plan Name: small
UUID: 910f1410-9c48-435c-8f8a-a775c6688021
Last Action: CREATE
Last Action State: in progress
Last Action Description: Creating cluster
Kubernetes Master Host: pks-cluster-1.fqdn
Kubernetes Master Port: 8443
Worker Nodes: 3
Kubernetes Master IP(s): In Progress
Network Profile Name:
Use 'pks cluster pks-cluster-1' to monitor the state of your cluster

查看群集列表

root@ubuntu:~# pks clusters
Name Plan Name UUID Status Action
pks-cluster-1 small 910f1410-9c48-435c-8f8a-a775c6688021 in progress CREATE

查看群集详细信息

root@ubuntu-jump:~# pks cluster pks-cluster-1

Name: pks-cluster-1

Plan Name: small

UUID: 910f1410-9c48-435c-8f8a-a775c6688021

Last Action: CREATE

Last Action State: in progress

Last Action Description: Instance provisioning in progress

Kubernetes Master Host: pks-cluster-1.fqdn

Kubernetes Master Port: 8443

Worker Nodes: 3

Kubernetes Master IP(s): In Progress

Network Profile Name:

如果我们在创建K8s群集时查看vSphere Client,我们会在管理AZ中看到四个新VM。这些不是我们的K8s集群虚拟机,实际上是BOSH编译虚拟机。BOSH即时编译包。这可以通过检查自定义属性来确认。

pks cluster <cluster-name>命令将返回创建集群的命令。注意,而不是手动检查您可以使用watch命令。您还会注意到群集的K8s API IP 10.0.80.11来自我们的NSX-T浮动IP池。如果愿意,您可以在DNS中为pks-cluster-1.fqdn创建一个条目,以解析为10.0.80.11

root@ubuntu-jump:~# pks cluster pks-cluster-1

Name: pks-cluster-1

Plan Name: small

UUID: 910f1410-9c48-435c-8f8a-a775c6688021

Last Action: CREATE

Last Action State: succeeded

Last Action Description: Instance provisioning completed

Kubernetes Master Host: pks-cluster-1.fqdn

Kubernetes Master Port: 8443

Worker Nodes: 3

Kubernetes Master IP(s): 10.0.80.11

Network Profile Name:

查看我们的vSphere Client,我们现在可以在我们的AZ AZ1,AZ2和AZ3上看到4x虚拟机,主节点位于AZ1中,AZ中的3x工作节点,就像我们在小计划中定义的那样。我们还看到主节点IP地址来自我们在NSX-T中定义的节点IP块。

现在群集已经部署了,可以分别使用kubectl和pks结合起来使用。

pks get-credentials <cluster-name>

root@ubuntu:~# pks get-credentials pks-cluster-1
Fetching credentials for cluster pks-cluster-1.
Context set for cluster pks-cluster-1.
You can now switch between clusters by using:
$kubectl config use-context <cluster-name>

kubectl cluster-info

root@ubuntu:~# kubectl cluster-info
Kubernetes master is running at https://pks-cluster-1.fqdn:8443
Heapster is running at https://pks-cluster-1.fqdn:8443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://pks-cluster-1.fqdn:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
kubernetes-dashboard is running at https://pks-cluster-1.fqdn:8443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
monitoring-influxdb is running at https://pks-cluster-1.fqdn:8443/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

kubectl get nodes -o wide

root@ubuntu:~# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
9af0e2c7-4719-47cb-85db-23a8238210fd Ready <none> 1h v1.11.5 172.15.0.3 172.15.0.3 Ubuntu 16.04.5 LTS 4.15.0-42-generic docker://17.12.1-ce
a3add38b-d527-4f8d-ae52-b8a9e673f344 Ready <none> 1h v1.11.5 172.15.0.5 172.15.0.5 Ubuntu 16.04.5 LTS 4.15.0-42-generic docker://17.12.1-ce
b5cc05e7-4c1e-49f1-9475-bfd9beb93a07 Ready <none> 1h v1.11.5 172.15.0.4 172.15.0.4 Ubuntu 16.04.5 LTS 4.15.0-42-generic docker://17.12.1-ce

NSX-T对象

当我们使用PKS API创建k8s集群时,后台会发生很多动作。但让我们看一下在NSX-T中创建的对象。

在NSX Manager中,转到Networking> Routers,我们可以看到下面有6个新的tier-1路由器。在创建K8s群集之前,我们只有T0-LR和t1-pks-mgmt。

新对象名称包括PKS K8s群集的UUID,910f1410-9c48-435c-8f8a-a775c6688021,它与pks群集和pks群集<cluster-name > 返回的UUID相同。第一个,lb-pks- <uuid> -cluster-router是负载均衡器的第1层。其次,pks- <uuid> -cluster-router用于master服务器和worker服务所在的k8s节点网络。当创建新群集时,剩余的4个tier-1用于4个默认命名空间,它们是pks-system,kube-system,kube-public和default。您还会注意到这些新路由器旁边有一个图标,而T0-LR和t1-pks-mgmt没有,这表示它们是我们之前创建的超级用户创建的受保护对象。

在Networking> Switching中,还有6个新的逻辑交换机,1个用于负载均衡器,1个节点网络和4个用于默认命名空间。

在网络>路由> T0-LR>服务> NAT中,我们看到自动创建了5个新的NAT规则。下面有Prioirty 1024的规则(2064到2075)。第一个规则2064用于我们的节点网络,其余四个用于命名空间pod网络

在Networking> Load Balancing中,我们看到了一个新的负载均衡器,同样是我们集群的UUID

负载均衡器具有3个虚拟服务器,同样集群UUID构成其名称的一部分。第一个在其名称末尾带有虚拟服务器的是用于我们的k8s主节点的第4层虚拟服务器。您会注意到IP 10.0.80.11与pks cluster <cluster-name>返回的相同。其余两个虚拟服务器是http和https第7层虚拟服务器。

请继续关注我们后期的相关文章!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表