文末转载自微信公众号“木小农”,作者木小农。转载本文请联系沐小农公众号。国内安装K8S的四种方式。Kubernetes的安装其实并不复杂,因为Kubernetes是Google的产品,是从Google官网下载的。但由于网络问题,在国内无法连接到其中央仓库进行下载安装。软件包只能通过其他方式安装。在国内,使用Kubeadmin通过离线镜像安装的安装方式有四种:Kubeadmin是K8S提供的管理控制台。通过这里的命令,可以非常方便的快速发布和更新我们的集群。部署使用阿里云公有云平台安装K8S:这个也很好用,不需要做任何设置,马上就可以使用,但是有一个缺点——需要花钱通过官方安装yum仓库:这个是最简单的,但是这个安装K8S的包是很老的版本了。据说比谷歌最新版本落后了十个版本。以二进制包形式安装K8S:以第三方提供的二进制包形式安装K8S,比如Kubeasz,是github上的一个开源项目,因为是第三方提供的,如果不仔细验证,它非常容易出错,你不知道后台存在什么样的缺陷。今天我们使用的是第一种方法,使用Kubeadmin通过离线镜像安装K8S。本文也将使用Kubeadmin向大家展示K8S的集群部署和安装。我已经为你准备好了环境和安装包。有兴趣的可以下载安装。环境准备结构图:1.1这里需要说明一下物理机系统。小农在本地虚拟机上安装测试。不会安装的请看下面我安装虚拟机的教程:虚拟机安装教程:安装linux虚拟机(CentOS)详细教程安装K9S需要2个处理器,否则会初始化失败后来1.2物理机操作系统使用Centos7.864位[root@localhost~]#uname-aLinuxlocalhost.localdomain3.10.0-1127.el7.x86_64#1SMPTueMar3123:36:51UTC2020x86_64x86_64x86_64GNU/Linux[root@localhost~]#cat/etc/redhat-releaseCentOSLinuxrelease7.8.2003(Core)1.3集群信息环境准备命令2.1设置时区三台机器需要执行:timedatectlset-timehanzoneAsia/S.2设置hostname129执行:hostnamectlset-hostnamemaster130执行:hostnamectlset-hostnamenode1131执行:hostnamectlset-hostnamenode22.3添加hosts网络主机配置三台主机都需要添加这个配置vi/etc/hosts192.168.137.129master192.168.137添加后.130node1192.168.137.131node2完成,我们在master上pingnode1[root@localhost~]#pingnode1PINGnode1(192.168.137.130)56(84)bytesofdata.64bytesfromnode1(192.168.137.130):icmp_seq=1ttl=64time=0验证。ms64bytesfromnode1(192.168.137.130):icmp_seq=2ttl=64time=0.382ms64bytesfromnode1(192.168.137.130):icmp_seq=3ttl=64time=0.321ms2.4生产环境关闭防火墙可以跳过这一步,这里只是为了方便我们在学习的时候使用SELINUX。Itisasecurity-enhancedLINUX,它是LINUX内置的一个安全增强模块,可以增强LINUX的安全性,但是这个设置起来太麻烦了,所以我们在学习过程中一般都会关闭这个关机命令:sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config设置为暂时生效:setenforce0禁用防火墙:systemctldisablefirewalld停止防火墙:systemctlstopfirewalld安装kubeadm部署工具首先我们要搞清楚一个概念,Kubeadm不是K8S本身。Kubeadm只是一个快速部署工具。安装这个工具可以帮助我们简化K8S部署的过程创建文件目录:mkdir/usr/local/k8s切换目录地址:cd/usr/local/k8s然后我们把安装包(kubernetes-1.14安装包开头有下载链接)放到k8s目录下【root@masterk8s]#lldrwxr-xr-x2rootroot335Nov611:17kubernetes-1.14切换到kubernetes目录[root@masterk8s]#cdkubernetes-1.14/[root@masterkubernetes-1.14]#lltotal986908-rw-r--r--1rootroot357Jul314:15admin-role.yaml-rw-r--r--1rootroot67Jul314:15daemon.json-rw-r--r--1rootroot67850818Jul314:15docker-ce-18.09.tar.gz-rw-r--r--1rootroot177698304Jul314:15flannel-dashboard.tar.gz-rw-r--r--1rootroot927Jul314:15init.sh-rw-r--r--1rootroot706070528Jul314:15k8s-114-images.tar.gz-rw-r--r--1rootroot79Jul314:15k8s.conf-rw-r--r--1rootroot58913350Jul314:15kube114-rpm.tar.gz-rw-r--r--1rootroot12306Jul314:15kube-flannel.yml-rw-r--r--1rootroot281Jul314:15kubernetes-dashboard-admin.rbac.yaml-rw-r--r--1rootroot4809Jul314:15kubernetes-dashboard.yaml-rw-r--r--1rootroot953Jul314:15worker-node.sh[root@masterkubernetes-1.14]#这里包括我们安装K8S的所有内容,其中kube114-rpm.tar.gz:是我们的Kubeadm集群管理工具的安装压力收缩包docker-ce-18.09.tar.gz:是我们的docker安装压缩包,安装到本地即可自动部署K8S镜像flannel-dashboard.tar.gz:监控集群状态要安装Docker,我们需要在所有三台机器上安装docker。本文以master节点进行演示。首先,docker-ce-18.09.tar。gz用于解压[root@masterkubernetes-1.14]#tar-zxvfdocker-ce-18.09.tar.gz[root@masterkubernetes-1.14]#cddocker在安装之前我们首先要确保原来的y??um源和docker依赖up日期。所以我们需要先执行如下命令,这一步的命令执行是在docker目录下执行的1.安装GCCyum-yinstallgccyum-yinstallgcc-c++2.卸载老版本docker依赖yumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotateddocker-logrotateddocker-selinuxdocker-engine-selinuxdocker-engine3。安装yum-utils组件:yuminstall-yyum-utilsdevice-mapper-persistent-datalvm24。添加yum源PSdocker官网地址:sudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo阿里云地址:sudoyum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo5,更新yum索引:sudoyummakecachefast6,安装docker-ce:sudoyum安装docker-ce7,卸载旧版docker及依赖这一步不再赘述,就是卸载上一步安装docker-ceyumremoveddockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotateddocker中的docker-ce在我们的k8s包中-logrotateddocker-selinuxdocker-engine-selinuxdocker-engine8。执行我们的安装包中的文件:yumlocalinstall-y*.rpm到这里就代表我们的docker安装完成了启动docker:systemctlstartdocker设置docker自动启动:systemctlenableDocker确保cgroups在同一个命令中执行命令:[root@masterdocker]#dockerinfo|grepcgroupCgroupDriver:cgroupfscgroups是controlgroups的缩写,它为Linux内核提供了一种任务聚合和划分的机制。一些任务通过一组参数集组织成一个或多个子系统cgroups是实现IaaS虚拟化(kvm、lxc等)、PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。子系统是根据cgroup的任务划分功能,将任务按照指定的属性划分为一组,主要用于实现资源控制。在cgroup中,划分的任务组以层级结构组织起来,多个子系统形成一个类似于数据结构中多棵树的结构。Cgroup包含多个独立的子系统,每个子系统代表一个资源。我们只需要确认输入上面的命令后出现:CgroupDriver:cgroupfs当我们输入命令发现不是CgroupDriver:cgroupfs的结果时,那么我们需要执行如下命令:修改daemon.json:cat<
