kubeadm搭建kubernetes集群之三:加入node节点
在上一章《kubeadm搭建kubernetes集群之二:创建master节点》的实战中,我们把kubernetes的master节点搭建好了,本章我们将加入node节点,使得整个环境可以部署应用;
前提条件
由于要用到谷歌的服务,所以要求您的网络环境可以科学上网,具体的方案就不在这里说了;
复制文件
如下图所示,cent7是我们上一章操作完成后对应的CentOS7的VMware文件夹,node1、node2都是直接复制cent7文件夹再粘贴生成的;
启动
请参照《kubeadm搭建kubernetes集群之二:创建master节点》中的操作,用VMware将node1文件夹中的虚拟机文件打开,再改名为node1,然后启动虚拟机;
修改hostname再重启node1
等node1启动完毕,进入系统,修改/etc/hostname文件,这里面只有一行内容“localhost.localdomain”,改成”node1”,保存后重启node1;
设置kubelet服务自启动
执行以下命令设置kubelet自启动:
systemctl enable kubelet
以node身份加入kubernetes集群
在上一章《kubeadm搭建kubernetes集群之二:创建master节点》的实战中,我们初始化master完成后控制台输出了以下信息:
kubeadm join –token 4fccd2.b0e0f8918bd95d3e 192.168.119.132:
如果您不记得上述信息了也没关系,在master上执行命令kubeadm token list,就能看到token参数了,如下图所示:
现在我们要将当前的node1加入到master所在的kubernetes集群中,在node1的控制台输入kubeadm join –token=4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443,(注意,这里的参数是–token=,不是控制台提示的-token )控制台显示信息如下:
如上图所示,提示连接失败了,在master和node1上依次执行以下命令,把防火墙全部关闭调:
systemctl stop firewalld;systemctl disable firewalld;setenforce
再试一次,在node1的控制台输入kubeadm join –token=4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443,控制台显示信息如下:
如上图所示,控制台的输出信息提示当前node已经加入到集群中了;
注意kubeadm join命令的格式
在上一章《kubeadm搭建kubernetes集群之二:创建master节点》中,执行完master的init操作后,控制台输出的node加入的提示信息如下:
kubeadm join –token 4fccd2.b0e0f8918bd95d3e 192.168.119.132:
此时如果执行上述命令,有可能会提示下面这个错误(我用这个命令的时候,结果node1加入成功,但是node2加入失败了,报错信息就是下面的):
[root@node1 ~]# kubeadm join –token 4fccd2.b0e0f8918bd95d3e 192.168.119.132:
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[preflight] Running pre-flight checks
[preflight] WARNING: docker version is greater than the most recently validated version. Docker version: 17.05.-ce. Max validated version: 1.12
[preflight] WARNING: hostname "node1" could not be reached
[preflight] WARNING: hostname "node1" lookup node1 on 192.168.119.2:: no such host
[validation] WARNING: kubeadm doesn't fully support multiple API Servers yet
[discovery: Invalid value: "": DiscoveryToken or DiscoveryFile must be set, discovery: Invalid value: "": token [""] was not of form ["^([a-z0-9]{6})\\.([a-z0-9]{16})$"], discovery: Invalid value: "": token must be of form '[a-z0-9]{6}.[a-z0-9]{16}', discovery: Invalid value: "–token": address –token: missing port in address, discovery: Invalid value: "4fccd2.b0e0f8918bd95d3e": address 4fccd2.b0e0f8918bd95d3e: missing port in address]
发生这个问题的时候,执行下面的命令就可以成功了:
kubeadm join --token=4fccd2.b0e0f8918bd95d3e 192.168.119.132:
检查node1状态
在master的控制台上,执行以下命令查看所有节点的状态:
kubectl get node
得到的列表信息如下图所示,node1节点的状态是”NotReady”:
这是因为node1节点的docker正在拉取镜像导致的,等待大约十分钟,再次执行kubectl get node看到的状态如下图,node1的状态已经正常了:
在node1的控制台上执行命令docker images,可以看到已经pull了一些镜像到本地,如下图:
加入node2,node3
重复上面的步骤,将node2和node3也加入进来,加入后状态如下图:
部署服务
在master节点上执行以下命令,可以创建了一个名字为tomcat的deploy:
kubectl run tomcat001 --image=tomcat:7.0.-jre7 --replicas= --port=
这样就创建了有两个副本的tomcat容器,执行kubectl get pod -o wide,看到下图所示:
如上图,两个pod分别被分配到了node2和node3上面,此时的状态是ContainerCreating,下载tomcat镜像是要时间的,所以耐心等待几分钟,再一次执行kubectl get pod -o wide,看到下图所示:
如上图所示,状态已经变成了Running,并且每个pod都有了内部ip;
我们能看到tomcat001-1395295392-fg1qd这个pod在kubernetes内部环境中的ip是192.168.104.1;
在node2上执行ip addr,我们看到的所有网卡和ip如下所示:
如上图红框所示,node2机器的ip也在pod的所在的192.168.104.xxx网段,所以node2是可以直接访问pod上的tomcat服务的,我们在node2系统中打开CentOS自带的firefox浏览器,输入192.168.104.1:8080,是可以成功访问到tomcat的;
在外网访问
在node2上通过pod的地址访问,能证明pod已经正常运行了,但是来自kubernetes环境之外的请求如何才能到达pod上呢?这就需要通过service的方式将deploy的端口暴露出去,执行以下命令创建基于现有deploy的service:
kubectl expose deploy tomcat001 --type=NodePort --target-port=
执行了上述命令,就把tocamt001的8080端口和node2、node3的端口做了绑定,绑定关系可以通过如下命令查看:
kubectl get svc tomcat001
得到信息如下图:
上图红框中的8080:32425表示将tomcat001服务的8080端口和node2、node3的32425端口建立了映射关系;
node2的ip是192.168.119.143,因此在windows上打开浏览器,输入
http://192.168.119.143:32425,即可访问到kubernetes集群中的tomcat服务,如下图所示:
至此,整个kubeadm搭建kubernetes集群的实战就结束了,希望能对您在部署和体验kubernetes集群的时候提供有用的参考;
kubeadm搭建kubernetes集群之三:加入node节点的更多相关文章
- kubeadm搭建kubernetes集群之二:创建master节点
在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现 ...
- kubeadm 搭建kubernetes集群环境
需求 kubeadm 搭建kubernetes集群环境 准备条件 三台VPS(本文使用阿里云香港 - centos7.7) 一台能SSH连接到VPS的本地电脑 (推荐连接工具xshell) 安装步骤 ...
- Kubernetes集群部署之五node节点部署
Node节点是Kubernetes集群中的工作负载节点.每个node都会被master分配一些工作负载,每个node节点都运行以下关键服务进程.Kubelet :负责pod对应的容器的创建.启停等任务 ...
- kubeadm搭建kubernetes集群之一:构建标准化镜像
使用docker可以批量管理多个容器,但都是在同一台电脑内进行的,这在实际生产环境中是不够用的,如何突破单机的限制?让多个电脑上的容器可以像单机上的docker-compose.yml管理的那样方便呢 ...
- 通过Kubeadm搭建Kubernetes集群
历经断断续续学习的两天,终于完成了一个简单k8s集群. 参考 https://www.cnblogs.com/edisonchou/p/aspnet_core_on_k8s_deepstudy_par ...
- centos7使用kubeadm搭建kubernetes集群
一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2 ...
- [转帖] kubeadm搭建kubernetes集群
http://www.bladewan.com/2018/01/02/kubernetes_install/ 学习中 kubernetes V1.9安装(附离线安装包和离线镜像) 2018-01-0 ...
- 使用kubeadm搭建Kubernetes集群
记录在石墨日记中,经常更新,懒得再复制了,直接点击下面链接查看吧 移步到此: https://shimo.im/docs/22WbxxQa1WUV9wsN/
- Kubernetes容器集群管理环境 - Node节点的移除与加入
一.如何从Kubernetes集群中移除Node比如从集群中移除k8s-node03这个Node节点,做法如下: 1)先在master节点查看Node情况 [root@k8s-master01 ~]# ...
随机推荐
- JDBC连接池&DBUtils
JDBC连接池 DBCP:Apache推出的Database Connection Pool 使用步骤: > 添加jar包 commons-dbcp-1.4.jar commons-pool ...
- 转:java 重定向和转发的区别
response.sendredirect("http://www.foo.com/path/error.html"); 重定向和转发有一个重要的不同:当使用转发时,JSP容器将使 ...
- windchill中表格API
表格图示 表格的测试类 package com.xiaostudy; import javax.servlet.http.HttpServletRequest; import org.apache.l ...
- from: can't read /var/mail/xxx 解决方法
在执行一个发包脚本的时候,遇到了如下问题: from: can't read /var/mail/scapy.all 原因:脚本是没有问题的,但它并不是可以被python执行的可执行文件. 解决方法: ...
- C# DES加密,KEY和IV不同设置的写法
1.KEY和IV分别赋值 //默认密钥向量 private static byte[] Iv= { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; ...
- RabbitMQ 的路由模式 Topic模式
模型 生产者 package cn.wh; import java.io.IOException; import java.util.concurrent.TimeoutException; impo ...
- 讲一下numpy的矩阵特征值分解与奇异值分解
1.特征值分解 主要还是调包: from numpy.linalg import eig 特征值分解: A = P*B*PT 当然也可以写成 A = QT*B*Q 其中B为对角元为A的特征值的对 ...
- Python模块学习之解决selenium的“can't access dead object”错误
问题描述 在python执行过程中,提示selenium.common.exceptions.WebDriverException: Message: TypeError: can't access ...
- [spring]<context:component-scan/>使用
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 多网卡绑定(bond)
通过以下命令查看bond0的工作状态查询能详细的掌握bonding的工作状态,如这个绑定各网卡的工作状态.主备关系.链路侦测时间[root@ASMTS ~]# cat /proc/net/bondin ...