前言
本系列文章旨在帮助对kubernetes没有什么搭建经验搬砖友人,有什么问题大家可以一起交流(文章最下有论坛地址,有疑问也可在论坛留言)。
一,kubernetes的安装方式
网上的安装方式大体分为两种:1,二进制包,源码安装;2,使用kubeadm方式进行安装;
我建议大家使用kubeadm的方式进行安装,为什么?
你既然来看我这篇文章,且读了前言还看到了这里,自然是对kubernetes不是很了解的砖友;
所以如果是使用源码安装的方式,多是推荐脚本安装方式;你必须先了解各个组件,还要系统的对kubernetes有系统的了解,尤其是在证书配置这块,费时;且安装过程中出现了异常,卡在某步骤,还不方便回滚也进行不下去;这种痛苦相信砖友在成长过程中类似的经验都深有体会,所以不推荐;
那kubeadm的安装方式有什么好处么?有,方便,各个组件证书可以帮你生成,想用自己的签发的证书只要提供ca即可;部署过程出了问题,直接reset;轻松加愉快;而且官方也推荐;
FAQ:
kubeadm支持集群、高可用的安装方式吗? 支持(今天写的文章是较简单的单台master方式部署)
linux什么系统都支持么? centos ubuntu还是别的都行,但是本文以centos为例,ubuntu懒得截图懒得写;
需要准备什么? 一台或者多台centos系统的虚机
1.1,使用kubeadm安装需要解决的问题(本篇文章只介绍单master安装,集群部署以后会说,大同小异)
kubernetes的安装,在天朝最大的问题,就是网络;镜像拉不下来是个大问题;
(如果你能科学上网,那看这里按着步骤做基本上都搞得定https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/)
大家不能科学上网,所以得先找好所需的kubeadm安装包和镜像(这是必须要解决的不能翻墙的问题);
我这里有kubernetes的1.9.0和1.10.5版的所需镜像;
部署的镜像与kubeadm的rpm包 https://pan.baidu.com/s/1eTWTXSI 密码: 6uma 感谢这位雷锋,如果过期,请到文章最下的论坛地址找我;
规划好虚机的角色:
可单台虚机即做master也做node;
也可多台master多台node;自己按需求规划就好;
所有角色虚机关闭swap selinux:
/etc/selinux/config 将SELINUX的值改为disabled;
echo "swapoff -a" >> /etc/rc.local
所有角色虚机修改以下系统参数:
sed -i '/ip_forward/ s/0/1/g' /etc/sysctl.conf
sed -i '/tables/ s/0/1/g' /etc/sysctl.conf
1.2,开始部署所需组件
首先,在所有角色上使用yum命令部署docker, yum install -y docker就完事了,接着开启docker:systemctl start docker && systemctl enable docker;
注意:使用docker info查看Cgroup Driver的值;稍后会用到;
接下来,安装部署kubeadm、kubelet、kubectl;
将之前下载好的文件(1.9.0的版本)复制到所有角色的虚机中,cd到文件的路径执行以下操作:
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
rpm -ivh kubernetes-cni-0.6.0-0.x86_64.rpm kubelet-1.9.9-9.x86_64.rpm
rpm -ivh kubectl-1.9.0-0.x86_64.rpm
rpm -ivh kubeadm-1.9.0-0.x86_64.rpm
执行完成,cd到下一级的docker_images文件夹;
执行 docker load -i 所有文件名; 将所有所需要的1.9.0的镜像导入到images;
(需要部署其他版本的下载的可添加yum源
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
安装自己想要的指定版本,阿里提供的源有所有kubernetes官方的相关组件版本;
至于所需的镜像如下,版本号前的都不变,根据kubernetes版本的不同对应的是末尾VX.XX.X,可在国内镜像站寻找这些镜像:
gcr.io/google_containers/kube-apiserver-amd64:v1.10.5
gcr.io/google_containers/kube-proxy-amd64:v1.10.5
gcr.io/google_containers/kube-scheduler-amd64:v1.10.5
gcr.io/google_containers/kube-controller-manager-amd64:v1.10.5
k8s.gcr.io/pause-amd64:3.1
quay.io/coreos/flannel:v0.9.1-amd64)
检查 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件的KUBELET_CGROUP_ARGS的值是否和使用docker info查看Cgroup Driver的值一致;
如果不一致,将KUBELET_CGROUP_ARGS改成使用docker info查看Cgroup Driver的值;然后执行
systemctl daemon-reload重新载入配置文件;
启动kuebelet: systemctl enable kubelet && systemctl start kubelet
至此所有角色虚机的docker,kubeadm相关组件和镜像全部准备完成;
1.3,部署master
单机部署或者单台master
可在唯一的master角色虚机上执行: kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16
若1.3之前步骤都以准备无误,那正常是可以看到以下结果:
至此master部署完成;
1.4,部署node
在所有node角色虚机上执行上图中的最后一行;
若1.4之前步骤都以准备无误,那正常是可以看到以下结果:
至此node部署完成;