部署 Kubernetes 容器集群管理系统

一、 Kubernetes 和相关组件介绍

1.Kubernetes 概述

Kubernetes 是 Google 开源的容器集群管理系统,基于 Docker 构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件。基于容器的云平台。官网:https://kubernetes.io/

2.Kubernetes 架构设计图

Kubernetes 是由一个 Master 和多个 Node 组成,Master 通过 API 提供服务,并接收 Kubectl 发送过来的请求来调度管理整个集群。
在这里插入图片描述

3.Kubernetes 常见组件介绍

  • APIServer:所有服务的统一访问入口。
  • Controller Manager(控制器):主要就是用来维持 Pod 的一个副本数。
  • Scheduler(调度器):主要就是用来分配任务到合适的节点。
  • ETCD:键值对数据库,存放了 K8s 集群中所有重要信息(持久化)
  • Kubelet:直接和容器引擎交互,用来维护容器的一个声明周期。
  • Kube-Proxy:用于将规则写入 iptablesIPVS 来实现服务的映射访问。
  • Kubectl:是 K8s 平台的管理命令。

二、 部署 Kubernetes 容器集群管理系统

准备工作:

主机名操作系统IP地址CPU内存
masterCentOS7192.168.1.14核2G
etcd192.168.1.2
node1192.168.1.3
node2192.168.1.4

1.配置 Kubernetes 的 yum 源

k8s-package.tar.gz 上传到 master 机器中:

[root@master ~]# ls
anaconda-ks.cfg  k8s-package.tar.gz
[root@master ~]# tar zxf k8s-package.tar.gz 
[root@master ~]# ls
anaconda-ks.cfg  k8s-package  k8s-package.tar.gz
[root@master ~]# cat <<END > /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=file:///root/k8s-package
enabled=1
gpgcheck=0
END

在这里插入图片描述
复制 K8s 的 yum 源相关文件到其他三台机器上:

[root@master ~]# scp -r /root/k8s-package 192.168.1.2:/root/
[root@master ~]# scp /etc/yum.repos.d/k8s.repo  192.168.1.2:/etc/yum.repos.d/			

2.配置 Hosts 文件

[root@master ~]# cat <<END >> /etc/hosts
192.168.1.1 master
192.168.1.2 etcd
192.168.1.3 node1
192.168.1.4 node2
END
 hosts 文件远程复制到其他三台机器中:
[root@master ~]# scp /etc/hosts 192.168.1.2:/etc/

在这里插入图片描述

3.在各个节点上面安装 K8s 组件

master:

[root@master ~]# yum -y install kubernetes flannel ntp

etcd:

[root@etcd ~]# yum -y install etcd flannel ntp

node1,node2:

[root@node1 ~]# yum -y install kubernetes flannel ntp

4.部署 ETCD 服务器

1)配置 ETCD 主配置文件

[root@etcd ~]# vim /etc/etcd/etcd.conf
9 ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.1.2:2379"
20 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.2:2379"

在这里插入图片描述

[root@etcd ~]# systemctl start etcd								# 启动 ETCD 服务
[root@etcd ~]# systemctl enable etcd							# 配置 ETCD 开启自启
[root@etcd ~]# netstat -anpt | grep 2379						# 查看 ETCD 端口号
[root@etcd ~]# etcdctl member list								# 检查 ETCD 集群成员列表. 这里只有一台

在这里插入图片描述

2)配置 ETCD 网络

[root@etcd ~]# etcdctl mkdir /k8s/network						# 创建一个目录 /k8s/network 用于存储 flannel 网络信息
[root@etcd ~]# etcdctl set /k8s/network/config '{"Network":"10.255.0.0/16"}'	#  /k8s/network/config 赋一个字符串的值
[root@etcd ~]# etcdctl get /k8s/network/config					# 查看

3)Flannel 启动过程解析

  1. 从 ETCD 中获取出 /k8s/network/config 的值;
  2. 划分 subnet 子网,并在 ETCD 中进行注册;
  3. 将子网信息记录到 /run/flannel/subnet.env 中。

4)配置 Flannel 服务

[root@etcd ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS="http://192.168.1.2:2379"
8 FLANNEL_ETCD_PREFIX="/k8s/network"
11 FLANNEL_OPTIONS="--iface=ens33"

在这里插入图片描述

[root@etcd ~]# systemctl start flanneld
[root@etcd ~]# ifconfig

在这里插入图片描述

5)查看子网信息

[root@etcd ~]# cat /run/flannel/subnet.env

在这里插入图片描述

  • 后面将会有一个脚本将 subnet.dev 转写成一个 docker 的环境变量文件 /run/flannel/docker
  • docker0 的地址是由 /run/flannel/subnet.envFLANNEL_SUBNET 参数决定的。
[root@etcd ~]# cat /run/flannel/docker

在这里插入图片描述

5.部署 master 服务器

1)配置 Kubernetes 主配置文件

[root@master ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.1.1:8080"

在这里插入图片描述

2)配置 APIServer 配置文件

[root@master ~]# vim /etc/kubernetes/apiserver
8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
17 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.1.2:2379"
23 KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit"

在这里插入图片描述

3)配置 Kube-Scheduler 配置文件

[root@master ~]# vim /etc/kubernetes/scheduler
7 KUBE_SCHEDULER_ARGS="0.0.0.0"

在这里插入图片描述

5)配置 Flannel 服务

[root@master ~]# vim /etc/sysconfig/flanneld 
4 FLANNEL_ETCD_ENDPOINTS="http://192.168.1.2:2379"
8 FLANNEL_ETCD_PREFIX="/k8s/network"
11 FLANNEL_OPTIONS="--iface=ens33"

在这里插入图片描述

6)启用 master 上 4 个服务

[root@master ~]# systemctl start kube-apiserver kube-controller-manager kube-scheduler flanneld				
[root@master ~]# systemctl enable kube-apiserver kube-controller-manager kube-scheduler flanneld			
[root@master ~]# ifconfig

在这里插入图片描述

5.部署 node1,node2 节点服务器

node1,node2 操作步骤一致:

1)配置 Flannel 服务

[root@node1 ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS="http://192.168.1.2:2379"
8 FLANNEL_ETCD_PREFIX="/k8s/network"
11 FLANNEL_OPTIONS="--iface=ens33"

在这里插入图片描述

2)配置 master 地址

[root@node1 ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.1.1:8080"

在这里插入图片描述

3)配置 Kubelet

[root@node1 ~]# vim /etc/kubernetes/kubelet
5 KUBELET_ADDRESS="--address=0.0.0.0"
11 KUBELET_HOSTNAME="--hostname-override=node1"				     	# node2 主机改为 node2
14 KUBELET_API_SERVER="--api-servers=http://192.168.1.1:8080"

在这里插入图片描述

4)启用服务

[root@node1 ~]# systemctl start flanneld kube-proxy kubelet docker 
[root@node1 ~]# systemctl enable flanneld kube-proxy kubelet docker
[root@node1 ~]# ifconfig

在这里插入图片描述

5)查看 Kube-Proxy 端口号

[root@node1 ~]# netstat -antp | grep proxy

在这里插入图片描述

6.在 master 上查看整个集群的运行状态

[root@master ~]# kubectl get nodes

在这里插入图片描述

  • 18
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿许浪尽天涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值