前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S: (二)play with k8s 多节点在线部署

K8S: (二)play with k8s 多节点在线部署

原创
作者头像
angelo
发布2019-10-31 10:15:01
2.8K0
发布2019-10-31 10:15:01
举报
文章被收录于专栏:CDN_New

一、实验环境

浏览器访问 https://labs.play-with-k8s.com/ 并登陆(可用dockerhub账号直接登录)

image.png
image.png

点击 +ADD NEW INSTANCE新增第一个实例

image.png
image.png

二、部署第一个节点

初始化节点,执行

代码语言:txt
复制
kubeadm init --apiserver-advertise-address $(hostname -i)

kubeadm init和kubeadm join两个命令用于快速构建k8s集群, 执行init 后会自动生成join命令

image.png
image.png
image.png
image.png

执行完毕后,记录下kubeadm join命令,后面会在其他节点上执行

代码语言:txt
复制
kubeadm join 192.168.0.17:6443 --token qglebb.ptn3dqq7n4ebo0zx --discovery-token-ca-cert-hash sha256:23ca463c1fe5db9969af70691c69b79da87665c3ac27f3aa7258995b1d4506be

三、部署其他四个节点

点击 +ADD NEW INSTANCE,继续新增四个实例

image.png
image.png

在这些实例中分别执行:

代码语言:txt
复制
kubeadm join 192.168.0.17:6443 --token qglebb.ptn3dqq7n4ebo0zx --discovery-token-ca-cert-hash sha256:23ca463c1fe5db9969af70691c69b79da87665c3ac27f3aa7258995b1d4506be

执行成功的节点的左侧图标会发生变化:

image.png
image.png

在master节点上执行:

代码语言:txt
复制
kubectl get nodes

可以看到5个节点已经初步部署完成

image.png
image.png

此时节点的状态为NotReady,继续在master上部署网络代理:

代码语言:txt
复制
kubectl apply -n kube-system -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 |tr -d '\n')"
image.png
image.png

查看节点状态已经为Ready:

代码语言:txt
复制
kubectl get nodes
image.png
image.png

四、部署nginx服务

在mater上执行:

代码语言:txt
复制
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx-app.yaml
image.png
image.png

每个nginx会自动被部署到node节点中,默认是随机选择3个节点。查看pod状态

代码语言:txt
复制
kubectl get pods -o wide

pod为Running状态表示部署成功,正常运行中

image.png
image.png

查看服务状态:

代码语言:txt
复制
kubectl get svc

可以看到"my-nginx-svc"服务已经启动,内部80端口被映射到了外部30937端口

image.png
image.png
代码语言:txt
复制
ss -anlp|grep 30937

30937端口的确被监听,通过kube-proxy网络管理实现

image.png
image.png

五、开放端口,本机访问

将pod上的80端口暴漏给master节点

代码语言:txt
复制
kubectl expose deploy/my-nginx --port 80
image.png
image.png

查看服务地址:

代码语言:txt
复制
kubectl get svc my-nginx -o go-template --template '{{ .spec.clusterIP }}'

直接对10.100.214.243进行curl访问

代码语言:txt
复制
curl 10.100.214.243
image.png
image.png

可以看到nginx的默认欢迎界面,至此在k8s上部署nginx完成

六、可能遇到的问题

  1. 执行kubectl get pods -o wide发现pod长时间不为Running状态 查看pods部署时的日志,排查相应的错误即可kubectl describe pods
  2. 命令执行错误,想快速恢复某个节点状态 除master节点外,选中其他节点,点击DELETE删除节点
image.png
image.png

删除后点击+ADD NEW INSTANCE新增节点后执行前面记录的kubeadm join命令:

代码语言:txt
复制
kubeadm join 192.168.0.17:6443 --token qglebb.ptn3dqq7n4ebo0zx --discovery-token-ca-cert-hash sha256:23ca463c1fe5db9969af70691c69b79da87665c3ac27f3aa7258995b1d4506be

当前部署3个nginx实例,实际上我们有5个节点,当slave节点失败了之后,直接忽略删除也可以

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、实验环境
  • 二、部署第一个节点
  • 三、部署其他四个节点
  • 四、部署nginx服务
  • 五、开放端口,本机访问
  • 六、可能遇到的问题
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档