Kubernetes 实战教学,手把手教您设置拥有5个节点的 K8S 群集(无需搭建任何基础设施)

  1. 云栖社区>
  2. Docker公司>
  3. 博客>
  4. 正文

Kubernetes 实战教学,手把手教您设置拥有5个节点的 K8S 群集(无需搭建任何基础设施)

docker公司 2018-12-21 10:06:41 浏览2909
展开阅读全文

screenshot

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!


您是 Kubernetes新手吗?想用 Kubernetes 开创自己的事业吗?如果想,那么欢迎您,您来对地方了。本系列文章将为您提供帮助您使用 Kubernetes 获得实践经验的教程。在这里,您可以找到各种实验和教程,无论您是初学者、系统管理员、IT 专业人员还是开发人员,都可以为您提供帮助。而且,这是一个基于浏览器的免费学习平台,已经为您安装了 kubenetes 工具,如kubeadm、kompose 和 kubectl,您不需要额外增加任何基础设施,因为大多数教程都在 Play with K8s Platform 上(https://labs.play-with-k8s.com)运行。

Kubernetes(通常缩写为K8S)用于管理云平台中多个主机上的容器化的应用。Kubernetes 是自动化容器操作的开源平台,这些操作包括部署、调度和节点集群间扩展。在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现和访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

Kubernetes可以通过简单、自动化的部署、更新(滚动更新)以及几乎零停机时间来管理我们的应用程序和服务,大大加速开发过程。它还提供自我修复,当进程在容器内崩溃时,Kubernetes 可以检测并重新启动服务。任何开发人员都可以使用基本的 Docker 知识,打包应用程序并将其部署在 Kubernetes 上。

在一分钟内,Kubernetes 就可以在物理或虚拟机集群上安排和运行应用程序容器。Kubernetes还允许开发人员“切断”物理机和虚拟机的联系,从以主机为中心的基础设施转移到以容器为中心的基础设施,从而为您提供容器本身固有的全部优势。Kubernetes 提供了构建真正以容器为中心的开发环境基础设施。K8s 为容器分组、容器编排、健康检查、服务发现、负载平衡、水平自动扩展、隐私、配置管理、存储编排、资源使用监控、CLI和仪表板提供了丰富的功能。

这是第一篇针对设置5节点 Kubernetes 集群的文章。要开始使用 Kubernetes,请按照以下步骤操作:

在浏览器上打开 https://labs.play-with-k8s.com

点击“Start”按钮,进入PWK实例,如下图所示:

screenshot

点击“Add Instances” 来设置第一个 k8s 节点。

screenshot

克隆镜像仓库

git clone https://github.com/ajeetraina/kubernetes101/

cd kubernetes101/install

引导第一个节点集群

sh bootstrap.sh

添加新的 K8s 群集节点

  • 点击“Add Instances” 来设置第一个 k8s 集群节点。
  • 等待1分钟直到完成。
  • 复制以“kubeadm join”开头的命令,我们需要在工作节点上运行它。

设置工作节点

单击“Add New Instance”并将最后一个 kubeadm 命令粘贴到这个新的新工作节点上。

[node2 ~]$ kubeadm join --token 4f924f.14eb7618a20d2ece 192.168.0.8:6443 --discovery-token-ca-cert-hash sha256:a5c25aa4573e06a0c11b11df23c8f85c95bae36cbb07d5e7879d9341a3ec67b3

您将看到以下输出结果:

[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.

[preflight] Skipping pre-flight checks[discovery] Trying to connect to API Server "192.168.0.8:6443"

[discovery] Created cluster-info discovery client, requesting info from "https://192.168.0.8:6443"

[discovery] Requesting info from "https://192.168.0.8:6443" again to validate TLS against the pinned public key

[discovery] Cluster info signature and contents are valid and TLS certificate validates against pinned roots, will use API Server "192.168.0.8:6443"[discovery] Successfully established connection with API Server "192.168.0.8:6443"

[bootstrap] Detected server version: v1.8.15

[bootstrap] The server supports the Certificates API (certificates.k8s.io/v1beta1)

Node join complete:

  • Certificate signing request sent to master and response

received.

  • Kubelet informed of new secure connection details.

Run 'kubectl get nodes' on the master to see this machine join.

[node2 ~]$

验证 Kubernetes 集群

在主节点上运行以下命令:

[node1 ~]$ kubectl get nodes

NAME STATUS ROLES AGE VERSION

node1 Ready master 15m v1.10.2

node2 Ready 1m v1.10.2

[node1 ~]$

添加工作节点

[node1 ~]$ kubectl get nodes

NAME STATUS ROLES AGE VERSION

node1 Ready master 58m v1.10.2

node2 Ready 57m v1.10.2

node3 Ready 57m v1.10.2

node4 Ready 57m v1.10.2

node5 Ready 54s v1.10.2

[node1 ]$ kubectl get po

No resources found.

[node1 ]$ kubectl get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.96.0.1 443/TCP 1h

[node1 ]$

在下一篇文章,我将展示如何在5节点的 Kubernetes 集群上构建一个简单的 Nginx 应用程序。

网友评论

登录后评论
0/500
评论
docker公司
+ 关注
所属云栖号: Docker公司