Kubernetes v1.5.2 纯手工搭建

此篇文章介绍的是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级计算机工程学院的一名普通学生,通过博客来分享自己日常收获到的新知识,会持续坚持,感谢大家的阅读,希望可以帮到你!
转载的希望可以放上本文章的链接,谢谢!


版权声明:本文为lvjie13450原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。