第一课:Kubernets基本介绍和集群部署-准备工作

什么是容器编排

概括:支持docker在各个宿主机节点自动部署,自动扩容,负载均衡,滚动升级等这些操作是通过编排工具去完成,支持这些功能的工具,称为容器编排。流行的开源容器编排工具包括kubernets,docker swarm以及mesos等。

kubernetes 特点

  1. 自动化:自动部署,自动重启,自动复制,自动伸缩/扩展。
  2. 快速部署应用,快速扩展应用。
  3. 无缝对接与部署新的应用功能。
  4. 节省系统资源,优化硬件资源的使用。

kubernetes编排流程

  1. 用户通过Yaml编排文件,向服务端的Api Server发起请求,需要建立新容器。
  2. 服务端Api Server会把新建立容器信息写入到Etcd中。
  3. 服务端Scheduler会根据调度策略,分配运行此容器的节点。
  4. 服务端Api Server会监听Scheduler哪些新的Pod的变化信息,并且更新状态到Etcd中。
  5. 在服务端确定了哪些节点运行容器以后,会调用节点的Kubelet服务,通过Kubelet调用Docker拉取镜像,启动容器。
  6. 服务端Api Server也会监听kubelet服务,实时更新Pod状态到Etcd中。

kubernetes主要核心组件

组件 说明
Etcd etcd是兼具一致性和高可用性的键值数据库,保存了整个集群的状态和节点网段分配
apiserver 提供了资源操作的唯一入口,并提供认证,授权,访问控制,API注册和发现等机制
controller manager 负责维护集群的状态,比如故障检测,自动扩展,滚动更新等。
scheduler 负责资源的调度,按照预定的调度策略将pod调度到相应的node主机上。
kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
kube-proxy 是及群众每个节点上运行的网络代理,负责为Service提供cluster内部的服务发现和负载均衡。

kubernetes组件图

avator

除了核心组件,还有一些其他组件:

组件名 说明
kube-dns 负责为整个集群提供DNS服务。
Ingress controller 为服务提供外网入口。
Heapster 提供资源监控。
Dashboard 提供GUI
Federation 提供跨可用区的集群。

kubernetes部署

1. 软件版本

软件/系统 版本
centos 7.5
kubernetes-node-linux-amd64.tar.gz 1.15.1
flannel 0.11
etcd 3.3.10

2. 角色分配

kubernetes角色 分布节点 节点IP
kube-apiserver master 192.168.68.146/147/148
kube-controller-manager master 192.168.68.146/147/148
kube-scheduler master 192.168.68.146/147/148
etcd master 192.168.68.146/147/148
kubelet node 192.168.68.149/151
kube-proxy node 192.168.68.149/151
docker node 192.168.68.149/151
flannel master/node 192.168.68.146/147/148/149/151
keepalived(VIP) master 192.168.68.1

3. 安装前准备

可以参考我编写的系统初始化脚本文件
https://www.cnblogs.com/Doc-Yu/p/13453415.html

关闭防火墙

FIREWALL_state=`systemctl status firewalld | awk 'NR==3 {print $2}'`
if [ $FIREWALL_state = 'active' ];then
    systemctl stop firewalld
    systemctl disable firewalld
else
   echo "firewall is already stopped,nothing to do"
fi

关闭selinux

SELINUX_state=`getenforce`
if [ $SELINUX_state = 'Enforcing' ];then
    sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
else
    echo "selinux is already disabled,nothing to do."
fi

安装常用工具
yum -y install wget vim net-tools yum-utils lrzsz git telnet

修改hosts文件

cat >>/etc/hosts<<EOF
192.168.68.146 master01
192.168.68.147 master02
192.168.68.148 master03
192.168.68.149 node01
192.168.68.151 node02
EOF

修改内核参数

cat >>/etc/sysctl.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.swappiness=0
fs.file-max=52706963
fs.nr_open=52706963
EOF
sysctl -p

#net.bridge.bridge-nf-call-iptables = 1 开启iptables对二层网桥的转发
#net.ipv4.ip_forward=1 开启路由转发
#vm.swappiness=0 关闭swap
#fs.file-max=52706963 设置文件句柄数
#fs.nr_open=52706963 设置最大打开文件数

posted @ 2020-08-24 10:57  Doc-Yu  阅读(182)  评论(0编辑  收藏  举报