一:本章目录

  • Kubernetes介绍

  • 所需组件功能介绍

  • 环境规划与说明

  • 部署流程

  • 小结

二:Kubernetes介绍

1·概述:kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。


传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。


2·Kubernetes 特点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化,插件化,可挂载,可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

三:所需组件功能介绍

组件名称 组件作用 组件所在节点
ETCD etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。 Master
kube-apiserver kube-apiserver用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行。 Master
kube-controller-manager kube-controller-manager运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。 Master
kube-scheduler 监视新创建没有分配到Node的Pod,为Pod选择一个Node。 Master
kubelet kubelet是主要的节点代理,它会监视已分配给节点的pod Node
kube-proxy kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象。 Node
docker docker用于运行容器 Node和Master


四:环境规划与说明

主机名 IP 需安装的组件
Master(centos7.4) 192.168.243.128 etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker
Node1(centos7.4) 192.168.243.149 kubelet、kube-proxy、docker
Node2(centos7.4) 192.168.243.150 kubelet、kube-proxy、docker


说明:1·关闭 firewalld 2· 关闭 selinux 3· 关闭 swap 交换分区 4·用2G内存、2个cpu。


五:部署流程

5.1 master与node节点做好域名解析、关闭 firewalld 、关闭 selinux 、关闭 swap 交换分区

[root@master ~]# systemctl stop firewalld
[root@master ~]# vim /etc/selinux/config
SELINUX=disabled //修改为disabled


[root@master ~]# swapoff /dev/mapper/centos-swap //做好域名解析
[root@master ~]# vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.243.128 master
192.168.243.149 node1
192.168.243.150 node2


5.2安装ipvs 模块:

cat > /etc/sysconfig/modules/ipvs.modules <
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash 
/etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

5.3配置镜像地址开始安装,以下在Master、Node 都需要安装

[root@master ~]#cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF


[root@master ~]# yum install -y kubelet kubeadm kubectl //安装k8s客户端工具
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 //安装系统必要工具
[root@master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //添加软件源信息
[root@master ~]# yum makecache fast
[root@master ~]# yum -y install docker-ce //更新并安装docker
[root@master ~]# vim /etc/docker/daemon.jsonn //配置docker 加速器

{
"registry-mirrors": ["https://dxbdst4t.mirror.aliyuncs.com"]
}
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker.service
[root@master ~]# echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
[root@master ~]# echo "1" > /proc/sys/net/bridge/bridge-nf-call-ip6tables //开启IP转发
[root@master ~]# systemctl enable kubelet //设置开机自启与启动 kubelet,这里不需要 start kubelet
[root@master ~]# echo "1" >> /proc/sys/net/bridge/bridge-nf-call-iptables
[root@master ~]# kubeadm init --apiserver-advertise-address=192.168.243.128 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --kubernetes-version=v1.17.4 --image-repository registry.aliyuncs.com/google_containers // 开始初始化集群--注意这里的192.168.243.128 需要替换为自己的masterIP地址



得到以下结果初始化成功

Kubadm方式安装K8s----flannel 网络插件_第1张图片



以上图片说明需要自己手动执行上诉命令:

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config


5.4 node1、node2 开始加入master

在 node1、node2 上分别执行:
[root@node1 ~]# kubeadm join 192.168.243.128:6443 --token p1sou2.sbgnthemnqcdf13e \
--discovery-token-ca-cert-hash sha256:be4d40659699404f92d716ff013835a66689895ab81ee33da23e323a7ec7a21a



5.5 在master上部署 flannel 网络插件



`[root@master docker]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
****这里需要多等待一段时间,他会拉取镜像,启动pod****
[root@master ~]# kubectl get node       //执行此命令,查看node的 状态 都是ready 说明,网络插件部署成功
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   53m   v1.17.4
node1    Ready       28m   v1.17.4
node2    Ready       25m   v1.17.4

`

k8s 搭建结束