此篇文章介绍的是kubernetes-1.5.2版本
首先准备好三台虚拟机:
192.168.200.100 master
192.168.200.101 node1
192.168.200.102 node2
开始试验
首先关闭防火墙(三个节点都要操作):
systemctl stop firewalld && systemctl disable firewalld
#三个节点都要进行操作
关闭selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
#同样三个节点都要进行操作
因为kubernetes必须要关闭swap,所以说,在三个节点将swap交换分区关掉:
swapoff -a #关闭交换分区,不关闭在后面会报错
如果是最小化安装的话,在这边要先自己挂载一个本地源,做个本地yum仓库,将一些基础软件包安装好
基础软件包分别是(三个节点都要执行):
yum install -y vim net-tools bash-completion wget lrzsz
#PS:安装好之后,注销一下shell再登陆才会生效,或者su - 或者bash
设置阿里云镜像网站上CentOS7的YUM源(三个节点上都要执行):
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装K8S集群中的Master结点
1、首先安装etcd数据库:
Etcd是K8S提供默认的存储系统,保存所有集群数据。
Etcd是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,用Go语言开发。
CoreOS 是一个基于Linux 内核的轻量级操作系统,于2013年12月发布。为了计算机集群的基础设施建设而生,大量用于基于云计算的虚拟服务器 。
CoreOS 行走在云端。毫不夸张的说,CoreOS 是为云而生的操作系统 。
首先在master节点上安装etcd数据库
yum install -y etcd
配置etcd数据库
vim /etc/etcd/etcd.conf
只对以下内容做修改(只在master节点上修改):
PS:因为本人已经试验成功,所以说,配置文件都是修改好的,只会在后面进行注释要修改什么
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" #修改为0.0.0.0 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.200.100:2379" #这个地方的IP修改为本地IP
启动etcd数据库
systemctl restart etcd && systemctl enable etcd
查看etcd数据库的端口
netstat -lntup #查看2379和2380端口是否启动
2379端口:是Etcd数据库对外提供服务的端口。比如:K8S把数据保存到Etcd数据库的时候,用的就是这个端口。 2380端口: Etcd数据库内部使用的端口。比如:Etcd集群之间相互同步数据的时候,用的就是2380端口。此次搭建,不会涉及到Etcd的集群。若以后要搭建K8S的高可用,则就需要搭建Etcd的集群了
只安装K8S的master服务
只在 k8s-master 结点上安装 kubernetes-master 服务
kubernetes-client:K8S的客户端软件包,包含 kubectl 客户端命令,必不可少,非常有用。
此处安装 kubernetes-master 服务的版本是 1.5.2 。
yum install kubernetes-master.x86_64 -y
配置Apiserver服务
vim /etc/kubernetes/apiserver
1、由于 Apiserver 是K8S中的 核心 服务。所以,我们把安装了此服务的结点,就称为 k8s-master 结点。
2、Apiserver服务的端口是 8080 。
3、Kubelet服务的端口是 10250 。
4、Etcd数据库的端口是 2379 。
5、删除 ServiceAccount 。
PS:因为本人已经试验成功,所以说,配置文件都是修改好的,只会在后面进行注释要修改什么*
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" 将此处的address修改为0.0.0.0
KUBE_API_PORT="--port=8080" #取消这行的注释 KUBELET_PORT="--kubelet-port=10250"
KUBELET_PORT="--kubelet-port=10250"#取消这行的注释
KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.200.100:2379"#修改为master的IP
配置 Controller-manager 和 Scheduler 服务
vim /etc/kubernetes/config #因为在此版本中,这两个服务共用config文件
KUBE_MASTER="--master=http://192.168.200.100:8080"
#将此文件中的这行配置里面的ip写成master的ip
启动master服务
1、Apiserver 服务;
2、Controller-manager 服务;
3、Scheduler 服务
systemctl start kube-apiserver && systemctl enable kube-apiserver
systemctl start kube-controller-manager && systemctl enable kube-controller-manager
systemctl start kube-scheduler && systemctl enable kube-scheduler
检查 k8s-master 结点的健康状态
kubectl get componentstatus
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
至此,K8S集群中的Master节点搭建完毕
安装K8S集群中的Node结点
PS:此次搭建的架构中,有3个Node节点
所以,我们要在这个3个Node节点当好那个,做相同的操作
安装K8SNode服务
分别在 1个Master 、 2个Node结点 上安装Node服务
安装Node服务时,会自动安装Docker服务,其版本为 1.13.1 。
yum install kubernetes-node.x86_64 -y
分别在 1个Master、2个Node结点 上配置 Kube-proxy 服务
vim /etc/kubernetes/config
将另外2个Node节点上的KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.200.100:2379 这行配置文件修改为和master一样
分别在 1个Master、2个Node结点 上配置 Kubelet 服务
vim /etc/kubernetes/kubelet #master节点配置
#只需要修改一下配置
###
# kubernetes kubelet (minion) config
# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=192.168.200.100" #修改为master的IP
# The port for the info server to serve on
KUBELET_PORT="--port=10250" #取消注释,因为本人已经做成功了,所以说,已经在此处已经取消过注释了
# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override=master" #此处写所在节点的主机名
# location of the api-server
KUBELET_API_SERVER="--api-servers=http://192.168.200.100:8080" #此处写master节点的IP
# pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=docker.io/tianyebj/pod-infrastructure:latest"
#docker.io/tianyebj/pod-infrastructure:latest" 因为之前的pod镜像下载地址不能用了,所以在此处替换为docker.io/tianyebj/pod-infrastructure:latest"
# Add your own!
KUBELET_ARGS=""
vim /etc/kubernetes/kubelet #node1的修改配置
###
# kubernetes kubelet (minion) config
# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=192.168.200.101" #node1所在节点的IP
# The port for the info server to serve on
KUBELET_PORT="--port=10250" #取消注释
# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override=node1" #所在节点的hostname
# location of the api-server
KUBELET_API_SERVER="--api-servers=http://192.168.200.100:8080" #所在节点的IP
# pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=docker.io/tianyebj/pod-infrastructure:latest"
# Add your own!
KUBELET_ARGS=""
node2的配置同上,只需要修改IP和主机名即可。
启动Node服务,
三个节点都要进行操作:
1、kubelet服务
2、kube-proxy服务
systemctl start kubelet && systemctl enable kubelet #启动这个服务会自动启动docker服务,但是并不是开机自启动
systemctl enable docker #三个节点都要操作
systemctl start kube-proxy && systemctl enable kube-proxy
检查各Node节点是否加入了K8S集群
[root@master ~]# kubectl get node
NAME STATUS AGE
master Ready 49m
node1 Ready 45m
node2 Ready 45m
至此手动搭建完成
-----来自河南经贸19级计算机工程学院的一名普通学生,通过博客来分享自己日常收获到的新知识,会持续坚持,感谢大家的阅读,希望可以帮到你!
转载的希望可以放上本文章的链接,谢谢!