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 ~]# ...
随机推荐
- Maven取消编译自动测试
Maven取消编译自动测试 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&l ...
- Rank - 第二类斯特灵数
2017-08-10 20:32:37 writer:pprp 题意如下: Recently in Teddy's hometown there is a competition named &quo ...
- [小问题笔记(十)] SQL Server 里 float 转 varchar等字符类型 不使用科学计数法
需要转换两次, 试了一下 float 转 bigint 转 varchar 溢出了... 后来用 float 转 decimal(38,0) 转 varchar 就成功了~ ,)) )) 另吐槽一下 ...
- js 弹出层,以及在javascript里定义层样式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Global.asax详解
在网上找了N多相关的东西总说的不够细,现在终于找到了.可以了解web.cofig和Global.asax之间的关系以及执行的顺序. 在Global.asax.cs文件中 protected void ...
- 分布式系统中的幂等性-zookeeper与dubbo
现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有 ...
- javascript深入浅出
第一章 数据类型 1,六种数据类型:原始类型(number,string,boolean,null,undefined) + object对象(Function Array Date) 2,隐式转换: ...
- 在win7虚拟机中装sql server---待整理
本科学数据库的时候,为了做作业,需要在自己电脑上装sql server.但是每次都装不上,总是有各种小问题通不过.最后问学长,才采用了在虚拟机里装数据库的方法,在虚拟机中可以不用担心弄乱本机系统. 为 ...
- [oracle原]访问局域网内出现“ORA-12541:TNS:无监听程序”
近日在服务器局域网内27电脑上安装了oracle11g,本机上访问此数据库正常.但在局域网内其它机器上访问27上的数据库时,出现“ORA-12541:TNS:无监听程序”错误. 查27上的配置:D:\ ...
- idea maven install时,打包找不到微服务common中公用的包
如题:其实很简单,在打包之前要先使项目通过编译,编译通过之后再打包就可以了. 附idea编译键: