利用 kubeadm 在ubuntu 上搭建 kubernetes 集群(国内环境下)

ubuntu 搭建 kubernetes 集群(国内环境下)

Motivation

想学习 kubernetes 权威指南第4版这本书,但是书中配置环境采用的的系统为 CentOS,本人服务器装的全部都是 Ubuntu,有很多操作是不太一样的,于是本人写下了这个文件,希望对大家有所帮助。

#搭建实时机器学习集群

参考网页与书籍

  • https://blog.csdn.net/shykevin/article/details/98811021
  • Creating a single control-plane cluster with kubeadm - Kubernetes
  • https://www.weave.works/docs/net/latest/kubernetes/kube-addon/
  • https://blog.csdn.net/WMN7Q/article/details/78386462
  • https://blog.csdn.net/Fly_hps/article/details/89760931
  • https://blog.csdn.net/xiaoxiali/article/details/17096591
  • kubernetes 权威指南第四版

主要借鉴了第一个网页以及权威指南书中的安装过程,将两个进行了结合。

目标

一个 Master 节点,四个 slave 节点。
Master 节点操作系统为 ubuntu 16.04
四个 slave 节点操作系统为 ubuntu 18.04

搭建步骤

同步时间,确保所有服务器时间、时区是一样的(所有服务器均需执行):

强制时区改为上海:

ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash -c “echo ‘Asia/Shanghai’ > /etc/timezone”

安装 ntpdate:

apt-get install -y ntpdate

使用阿里云时间服务器更新时间:

ntpdate ntp1.aliyun.com

配置 apt, apt-get 源(所有服务器均需执行):

需要 root 权限,命令之前需要加上 sudo,也可切换到 root 用户下执行。

  • ubuntu 18.04
vim /etc/apt/sources.list

将文件中的源地址注释掉,加上一下的源地址:

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  • ubuntu 16.04:
    与上相同,不同的是添加的源地址列表为:
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

禁用 swap(所有服务器)

sudo sed -i ‘/swap/ s/^/#/‘ /etc/fstab
sudo swapoff -a

安装 Docker 18.06.1(所有服务器)

  • 更新 apt 源,并添加 https 支持:
sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
  • 使用 utc 源添加 GPG key:
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add 
  • 添加 Docker-ce 稳定版源地址:
sudo add-apt-repository “deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
  • 安装 docker-ce:
sudo apt-get update
sudo apt install docker-ce=18.06.1~ce~3-0~ubuntu

安装 kubelet,kubeadm,kubectl(所有服务器)

  • 添加 apt key 以及源:
sudo apt update && sudo apt install -y apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" >>/etc/apt/sources.list.d/kubernetes.list
  • 开始安装:
sudo apt update
sudo apt install -y kubelet=1.15.2-00 kubeadm=1.15.2-00 kubectl=1.15.2-00
sudo apt-mark hold kubelet=1.15.2-00 kubeadm=1.15.2-00 kubectl=1.15.2-00

kubeadm config (所有服务器)

执行以下命令,获得默认的初始化参数文件(保存到了当前文件夹):

kubeadm config print init-defaults > init.default.yaml

对生成的文件进行编辑:

cp init.default.yaml init-config.yaml
vim init-config.yaml

保留文件中的一些内容,修改一些内容,最终文件为:

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
imageRepository: docker.io/dustise
kubernetesVersion: v1.15.2
networking:
  podSubnet: “192.168.0.0/16”

下载 Kubernetes 相关镜像(所有服务器)

为了从国内的镜像站点获得镜像加速支持,建议修改 Docker 的配置文件:

vim /etc/docker/daemon.json

文件内容为:

{
  “registry-mirrors”: [“https://registry.docker-cn.com”]
}

重启 Docker 服务:

systemctl restart docker

下载所需镜像:

kubeadm config images pull —config=init-config.yaml

运行 kubeadm init 命令安装 Master(仅 Master 节点)

准备工作已经就绪,可以一键安装 Master 节点:

kubeadm init —config=init-config.yaml

等待一段时间后,Kubernetes 的 Master 安装成功,倒数第二行会显示 join token,类似于—token ah9koe.fjahfj84jja83nnd0d,请记得保存这个 token,未来 slave 节点加入网络需要这个 token。

按照提示执行下面的命令,复制配置文件到普通用户的 home 目录下:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

此时可以用以下命令进行验证:

kubectl get -n kube-system configmap

可以看到其中生成了名为 kubeadm-config 的 ConfigMap 对象:
利用 kubeadm 在ubuntu 上搭建 kubernetes 集群(国内环境下)_第1张图片

运行 kubeadm join 命令把 slave 节点加入集群(仅 slave 节点)

首先为 kubeadm 命令生成配置文件,创建文件 join-config.yaml ,内容为:

apiVersion: kubeadm.k8s.io/v1beta2
kind: JoinConfiguration
discovery:
  bootstrapToken:
    apiServerEndpoint: 192.168.1.19:6443
    token: exjw4i.bp7lbr45f92bd4uy
    unsafeSkipCAVerification: true
  tlsBootstrapToken: exjw4i.bp7lbr45f92bd4uy

其中 apiServerEndpoint 是你的 Master 节点的 IP 地址,token 以及 tlsBootstrapToken 都是之前安装 Master 时倒数第二行显示的信息。

将节点加入到集群:

kubeadm join —config=join-config.yaml

安装网络插件(Master节点)

对于网络插件,可以有许多选择,请参考 Creating a single control-plane cluster with kubeadm - Kubernetes
这里我选择了 weave 插件,执行以下的命令可以一键安装:

kubectl apply -f “https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d ‘\n’)”

最后的验证

在 Master 节点上输入下面命令:

kubectl get pods —all-namespace

应该会出现:

在 Master 节点上输入下面命令:

kubectl get nodes

应该会出现:
利用 kubeadm 在ubuntu 上搭建 kubernetes 集群(国内环境下)_第2张图片

至此,通过 kubeadm 工具就已经成功实现了 Kubernetes 集群的快速搭建。倘若安装失败,则可以执行 kubeadm reset 命令将主机恢复原状,重新执行 kubeadm init命令,再次进行安装即可。

你可能感兴趣的:(kubernetes)