kubernetes(简称 K8s)是一个开源的,用于管理云平台中多个主机上的容器化的应用。它的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
不过在我们日常学习中,要找到这么多台服务器来搭建 Kubernetes 集群并不如容易。好在 Docker 为我们提供一个的实验网站 Play with Kubernetes(PWK),我们在上面花个几分钟就可以让一个 Kubernetes 集群的试验环境跑起来,并在上面进行学习和测试。
1,Play with Kubernetes 介绍
(1)Play with Kubernetes 一个提供了在浏览器中使用免费 CentOS Linux 虚拟机的体验平台,其内部实际上是 Docker-in-Docker(DinD)技术模拟了多虚拟机/PC 的效果。
(2)Play with Kubernetes 平台有如下几个特色:
允许我们使用 github 或 dockerhub 账号登录
在登录后会开始倒计时,让我们有 4 小时的时间去实践
K8s 环境使用 kubeadm 来部署(使用用 weave 网络)
平台共提供 5 台 centos7 设备供我们使用(docker 版本为 17.09.0-ce)
2,搭建 Kubernetes 集群
(1)首先访问其网站,并使用 github 或 dockerhub 账号进行登录。
PWK 官网地址:https://labs.play-with-k8s.com/
(2)登录后点击页面上的 Start 按钮,我们便拥有一个自己的实验室环境。
(3)单击左侧的“Add New Instance” 来创建第一个 Kubernetes 集群节点。它会自动将其命名为“node1”,这个将作为我们群集的主节点。
(4)由于刚创建的主节点 IP 是 192.168.0.13,因此我们执行如下命令进行初始化:
1 | kubeadm init --apiserver-advertise-address 192.168.0.13 --pod-network-cidr=10.244.0.0/16 |
(5)初始化完毕完成之后,界面上会显示 kubeadm join 命令,这个用于后续 node 节点加入集群使用,需要牢记。
(6)接着还需要执行如下命令安装 Pod 网络(这里我们使用 flannel),否则 Pod 之间无法通信。
1 | kubectl apply -f https: //raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml |
(7)最后我们执行 kubectl get nodes 查看节点状态,可以看到目前只有一个 Master 节点。
(8)我们单击左侧的“Add New Instance”按钮继续创建 4 个节点作为 node 节点
(9)这 4 个节点都执行类似如下的 kubeadm join 命令加入集群(即之前 master 节点初始化完成后红框部分内容)
1 | kubeadm join 192.168.0.13:6443 --token opip9p.rh35kkvqzwjizely --discovery-token-ca-cert-hash sha256:9252e13d2ffd3569c40b02c477f59038fac39aade9e99f282a333c0f8c5d7b22 |
(10)最后我们在主节点执行 kubectl get nodes 查看节点状态,可以看到一个包含有 5 个节点集群已经部署成功了。
3,Kubernetes 集群的使用
(1)执行如下命令通过 yaml 文件部署运行 nginx 服务(该 yaml 文件中指明了副本数量为 3)
1 | kubectl apply -f https: //raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx-app.yaml |
(2)执行如下命令查看副本(pod)情况,可以看到确实有三个副本分别部署在三个 node 节点上。
1 | kubectl get pods -o wide |
(3)执行如下命令则可以查看 services 状态。
1 | kubectl get service |
(4)当部署完毕后,页面上方会出现一个带有数字的蓝色按钮,按钮数字即为 Services 随机配置的外部 port。点击蓝色按钮,即可看到 Nginx 服务的欢迎页面。(但我测试时一直没有出现,不清楚是什么原因)
原文链接:https://www.hangge.com/blog/cache/detail_2420.html