想学习 kubernetes 权威指南第4版这本书,但是书中配置环境采用的的系统为 CentOS,本人服务器装的全部都是 Ubuntu,有很多操作是不太一样的,于是本人写下了这个文件,希望对大家有所帮助。
#搭建实时机器学习集群
主要借鉴了第一个网页以及权威指南书中的安装过程,将两个进行了结合。
一个 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
需要 root 权限,命令之前需要加上 sudo,也可切换到 root 用户下执行。
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
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
sudo sed -i ‘/swap/ s/^/#/‘ /etc/fstab
sudo swapoff -a
sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add
sudo add-apt-repository “deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable”
sudo apt-get update
sudo apt install docker-ce=18.06.1~ce~3-0~ubuntu
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 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”
为了从国内的镜像站点获得镜像加速支持,建议修改 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
准备工作已经就绪,可以一键安装 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 命令生成配置文件,创建文件 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
对于网络插件,可以有许多选择,请参考 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 工具就已经成功实现了 Kubernetes 集群的快速搭建。倘若安装失败,则可以执行 kubeadm reset
命令将主机恢复原状,重新执行 kubeadm init
命令,再次进行安装即可。