本次安装环境是Ubuntu16.04,其余环境下,shell命令会有一些不一样,但步骤应该大体相同,默认docker已经安装完成html
下载安装下列软件node
因为墙的缘由,获取这些软件包有些麻烦。通过上网查阅了一些资料,目前主要有两种下载安装这些软件包。linux
其中一种是去k8s的github仓库上下载源码,解压安装。我最开始就是用的这种方式,可是以失败了结,详情见后面的问题总结。git
第二种是添加k8s国内软件镜像源,使用apt进行下载安装。主要在/etc/apt/source.list文件附加下面的源github
# 我使用的是阿里的镜像,若是你使用的其余国内镜像,请找对应的k8s镜像源 deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
而后执行下列命令,安装软件。docker
# 我使用的是1.13.0-00版本,若是不清楚具体的版本号, # 可使用 apt-cache show 命令进行查询 export K8S_VERSION=1.13.0-00 apt-get update # 更新软件源 apt-get install kubelet=${K8S_VERSION} apt-get install kubeadm=${K8S_VERSION} apt-get install kubectl=${K8S_VERSION}
经过这种方式下载的软件,已经被自动安装好了,全部的环境已经被设置好了,能够直接运行命令便可。
若是不熟悉kubelet和kubeadm的一些启动参数,不建议下载可执行包,本身手动安装。
经过apt进行安装,能够省下不少事情。我最终经过这种方式成功安装好了三个软件。shell
首先须要作一些配置,以及下载必要的镜像。原本能够直接执行kubeadm init命令初始化master节点的,可是因为国内有墙,因此在执行kubeadm init命令前,须要作一些额外的工做,主要是下载镜像。ubuntu
通常状况下须要执行下列命令关闭虚拟内存[1],不然报以下错误api
# 关闭swap。 # 可是系统重启后,swap又会被启动。 # 所以每次重启节点,都要手动执行该命令关闭swap,不然kubelet会启动失败 # 能够执行 sysctl -w vm.swappiness=0 完全关掉swap swapoff -a
因为墙的缘由,在下载"pause"等docker镜像时,会出现问题
解决办法是从阿里docker镜像网站上下载镜像,而后修改镜像的tag[3]
执行以下命令网络
# $imageName指要下载镜像的名称,能够经过 kubeadm config images list 命令获取,但要去掉前面的k8s.gcr.io/ docker pull registry.aliyuncs.com/google_containers/$imageName docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.aliyuncs.com/google_containers/$imageName
执行kubeadm init命令,结果以下:
接下来配置kubectl(若是kubeadm init执行成功的,会显示如何配置kubectl),主要执行下列命令
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 将文件权限设为当前用户
而后就能够用kubectl执行一些命令测试是否成功运行(如 kubectl get nodes)。
因为我是只有一台机器,因此只有一个master节点
执行kubeadm token create --print-join-command获取加入命令,而后在节点上执行,便可加入集群
为k8s安装插件,至关于在集群中建立一些资源,主要使用kubectl apply -f config_file
为了使Pod之间可以跨节点通讯,所以须要按照额外的虚拟二层网络组件。因为我目前只有一台节点,没法测试,因此暂未安装
首先须要去github上k8s的仓库下,找到release页面,并在该页面下寻找须要下载的版本,好比咱们目前的项目须要1.13版,那么我就找到了https://github.com/kubernetes...这个页面,而后不要去下载这个页面里的压缩包,找到CHANGELOG-1.13,点击进入真正的下载页面。以下图红圈所示:
进入该页面,找到Server区域,下载k8s服务端的软件包(压缩包里包括了安装k8s必须的软件),这里我下载的是kubernetes-server-linux-amd64.tar.gz软件包。
下载完成后,切换到指望安装的目录,而后解压软件包。这里我但愿安装到/usr/local目录下,因此执行下列命令
cd /usr/local tar zxf kubernetes-server-linux-amd64.tar.gz
而后设置PATH,修改/etc/profile
export K8S_HOME=/usr/local/kubernetes export PATH=$PATH:$K8S_HOME/server/bin
而后重启,或者执行source /etc/profile,以更新环境变量。
经过这种方式下载软件包后,还须要作不少工做去安装配置kubeadm和kubelet,很麻烦。
通过我无数次的尝试,我最终以失败了结,没有用这种方式安装配置成功。
主要的问题在于kubeadm和kubelet的启动参数有点复杂,本身配置的话,须要对k8s有很深刻的认识,不然会按下葫芦浮起瓢。
我本身在那设置的半天,systemd都用的很熟练了,依然没有安装成功。
当我把个人ubuntu虚拟机重启后,发现k8s的组件没有自动运行,而后我一个个的去启动相应的容器,可是没有用。
最后我发现是由于kubelet没有启动成功,而没有启动的成功的缘由是由于swap没有关闭。
而且我还发现当在master节点上成功启动kubelet后,其余的组件,如apiserver也会随之启动。
[1] 只要用 kubeadm 小朋友都能部署 Kubernetes
[2] kubernetes基本安装-k8s-3
[3] 基于阿里云镜像站安装Kubernetes
[4] 用kubeadm在Ubuntu上快速构建Kubernetes测试集群