通过软件包形式安装kubernetes
规划部署图
1.安装前准备(所有节点操作)
1.1禁用SElinux
SElinux会提供强制访问控制系统,加强linux安全性,会影响kubernetes的部分组件使用,
setenforce 0
修改配置文件达到永久关闭
vim /etc/selinux/config
1.2禁用firewalld
firewalld为linux防火墙系统,安装部署时可以将其关闭。
systemctl stop firewalld
systemctl disable firewalld
1.3更新软件包
更新最新版软件包。
yum -y update
1.4同步系统时间
在所有节点上同时更新系统时间为中国时间,cn.pool.ntp.org是中国的网络时间协议(ntp)服务器。
ntpdate -u cn.pool.ntp.org
2.安装etcd
etcd:高可用的分布式键值数据库,kubernetes利用etcd来存储数据,提高可用性,通过在三个节点上安装etcd,形成一个3个节点的集群。
主要修改有以下配置
ETCD_LISTEN_PEER_URLS 用于指定etc节点监听的url,用于与其他分布式etcd节点通信,实现各个节点的数据通信、交互、选举、以及数据同步等功能。该url采用协议、IP和端口相组合的形式可以http也可以是https形式。
ETCD_LISTEN_CLIENT_URLS指定对外提供服务的地址,etcd api的地址
ETCD_NAME指定etcd节点名称
ETCD_INITIAL_ADVERTISE_PEER_URLS 指定节点同伴监听地址etcd节点间传递数据
ETCD_ADVERTISE_CLIENT_URLS 指定当前etcd节点对外布告的客户端监听地址,同时这个值会告诉集群中其他的节点
ETCD_INITIAL_CLUSTER 列出当前etcd集群中所有的etcd节点的节点通信地址
1.master部署
1.1安装etcd
通过命令安装etcd
yum -y install kubernetes-master etcd
1.2修改配置文件
修改etcd配置文件 /etc/etcd/etcd.conf.
2.node1部署
2.1安装kubernetes节点组件,etcd,flannel以及docker
yum -y install kubernetes-node etcd flannel docker
2.2安装后,修改/etc/etcd/etcd.conf
3.node2部署
3.1在node2上同样安装kubernetes节点组件,etcd,flannel以及docker,
yum -y install kubernetes-node etcd flannel docker
3.2安装后,修改配置文件/etc/etcd/etcd.conf
4.测试
4.1启动etcd服务
systemctl enable etcd
systemctl start etcd
4.2查看启动状态
原点处是绿色,并且Active的值是active(running),表明服务启动成功
systemctl status etcd
4.3查看集群健康状态
查看etcd集群的健康状态
etcdctl cluster-health
5.节点配置
master节点
主要修改有以下配置
KUBE_API_ADDRESS api-server进程绑定的IP地址,0.0.0.0表示绑定本机所有地址。
KUBE_API_PORT 用来指定 api-server监听的端口
KUBELET_PORT 表示kubelet监听的服务端口
KUBE_ETCD_SERVERS 用来指定etcd集群中的每个节点的地址。
KUBE_SERVICE_ADDRESSES 用来指定kubernetes中服务的IP地址范围
KUBE_ADMISSION_CONTRO 该选项默认会包含SecurityContextDeny,ServiceAccount。这两个值与权限有关,可以先去掉。
5.1修改apiserver
在 /etc/kubernetes目录中有 apiserver 、controller-manager以及scheduler等服务进程,通常需要修改的配置,是api-serve服务,配置文件在 /etc/kubernetes/apiserver
5.2启动master节点上的各项服务
启动服务
systemctl start kube-apiserver
systemctl start kube-controller-managet
systemctl start kube-scheduler
查看状态
systemctl status kube-apiserver
设置系统自启动
systemctl enable kube-apiserver
systemctl enable kube-controller-managet
systemctl enable kube-scheduler
5.3测试
通过访问192.168.146.143:8080(master主机IP:8080)端口,api-server通过JSON对象的形式返回各个API地址如图
Node节点配置
在node节点上主要运行kube-proxy和kubelet等进程,需要修改的配置文件主要有 /etc/kubernetes/config /etc/kubernetes/proxy /etc/kubernetes/kubelet, 三个文件分别是kubernetes全局配置文件,kube-proxy配置文件,kubelet配置文件,在node节点下修改都是差不多的,就是注意IP地址的差异。
5.4配置修改
node1配置修改
KUBE_MASTE 指定apiserver的地址
修改/etc/kubernetes/config
vim /etc/kubernetes/config
修改kubelet的配置文件
KUBELET_ADDRESS 指定kubelet绑定的IP地址,如果想绑定所有网络接口,可以指定为0.0.0.0
KUBELET_PORT 指定kubelet监听的端口
KUBELET_HOSTNAME 指定本节点的主机名,可以是主机名(例如node2),也可以是IP地址
KUBELET_API_SERVER 指定apiserver的地址
修改 /etc/kubernetes/proxy
配置完成后,执行以下命令启用配置
systemctl enable kube-proxy
systemctl enable kubelet
启动kube-proxy和kubelet服务
systemctl start kube-proxy
systemctl start kubelet
node2节点和上面方法一样,在修改kubelet的配置文件,KUBELET_API_SERVER 此项的时候将IP改为node2节点的IP地址
测试上述配置完成后,在master节点下测试
kubectl get nodes
5.5配置网络
flannel网络配置工具
在配置Flannel之前,先设置分配docker网络的网段,在master节点执行以下操作,在etcd中添加名称为 /atomic.io/network/config的主键,通过主键设置提供给docker容器使用的网段以及子网
etcdctl mk /atomic.io/network/config ‘{“Network”:“172.17.0.0/16”,“SubnetMin”:“172.17.1.0”,“SubnetMax”:"172.17.254.0:}’
然后在node1和node2节点上修改/etc/sysconfig/flanneld配置文件,两个node节点一致
需要注意的是中间的IP地址是自己部署的机器IP
FLANNEL_ETCD_ENDPOINTS 指定etcd集群的各个节点的地址
FLANNEL_ETCD_PREFIX 指定etcd中网络配置的主键该主键和前面设置的主键一致
FLANNEL_OPTIONS 这个–iface指定Flannel网络使用的网络接口
设置完成后,在node1和node2节点上通过命令启动flanneld
systemctl enable flanneld
systemctl start flanneld
这个时候,通过命令查看,就会出现一个新的网络接口
ip address show | grep flannel
虚拟接口指向的是172.17.0.0/16
同时还会生成两个配置文件
cat /run/flannel/docker
cat /run/flannel/subnet.env
网络此处只是大概,还有挺多需要深度学的,可以查阅相关学习