1.环境是ubuntu18.04.
两台主机分别为:192.168.134.131 , 192.168.134.132
2.我这次没有安装最新版的k8s,目前最新为1.13.x我的是1.10.2;(因为墙的缘故随便在网上找到百度云资源..)
3.安装docker,我这版本最高支持17.x不过我的是18.x,只是有警告,不过不影响;
4.禁用防火墙及虚拟内存swap;
5.下载k8s相关软件及拉取镜像:
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s http://packages.faasx.com/google/apt/doc/apt-key.gpg | sudo apt-key add -
sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet=1.10.2-00 kubeadm=1.10.2-00 kubectl=1.10.2-00
我这里指定了版本,否则会下载最新的跟拉下来的镜像不匹配;
## 拉取镜像
docker pull reg.qiniu.com/k8s/kube-apiserver-amd64:v1.10.2
docker pull reg.qiniu.com/k8s/kube-controller-manager-amd64:v1.10.2
docker pull reg.qiniu.com/k8s/kube-scheduler-amd64:v1.10.2
docker pull reg.qiniu.com/k8s/kube-proxy-amd64:v1.10.2
docker pull reg.qiniu.com/k8s/etcd-amd64:3.1.12
docker pull reg.qiniu.com/k8s/pause-amd64:3.1
## 添加Tag
docker tag reg.qiniu.com/k8s/kube-apiserver-amd64:v1.10.2 k8s.gcr.io/kube-apiserver-amd64:v1.10.2
docker tag reg.qiniu.com/k8s/kube-scheduler-amd64:v1.10.2 k8s.gcr.io/kube-scheduler-amd64:v1.10.2
docker tag reg.qiniu.com/k8s/kube-controller-manager-amd64:v1.10.2 k8s.gcr.io/kube-controller-manager-amd64:v1.10.2
docker tag reg.qiniu.com/k8s/kube-proxy-amd64:v1.10.2 k8s.gcr.io/kube-proxy-amd64:v1.10.2
docker tag reg.qiniu.com/k8s/etcd-amd64:3.1.12 k8s.gcr.io/etcd-amd64:3.1.12
docker tag reg.qiniu.com/k8s/pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1
## 在Kubernetes 1.10 中,增加了CoreDNS,如果使用CoreDNS(默认关闭),则不需要下面三个镜像。
docker pull reg.qiniu.com/k8s/k8s-dns-sidecar-amd64:1.14.10
docker pull reg.qiniu.com/k8s/k8s-dns-kube-dns-amd64:1.14.10
docker pull reg.qiniu.com/k8s/k8s-dns-dnsmasq-nanny-amd64:1.14.10
docker tag reg.qiniu.com/k8s/k8s-dns-sidecar-amd64:1.14.10 k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.10
docker tag reg.qiniu.com/k8s/k8s-dns-kube-dns-amd64:1.14.10 k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.10
docker tag reg.qiniu.com/k8s/k8s-dns-dnsmasq-nanny-amd64:1.14.10 k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.10
这里为了不能科学上网的准备方案...(其实一直可以科学,只是后来才搞了下linux虚拟机靠主机ssr....)
6.初始化master
kubeadm init --kubernetes-version=v1.10.2 --feature-gates=CoreDNS=true --pod-network-cidr=192.168.0.0/16
这里可以随便指定一个pod的网络区间;然后就会出现一些参数;
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
创建隐藏文件夹并复制配置文件,root用户可以忽略第三项;
kubeadm join 192.168.134.131:6443 --token zwv50y.g8d5oykrqclir6cv --discovery-token-ca-cert-hash sha256:fe8d579d17900263ba7d6421d4f9cac57443cf5e1a534da161351fd5b0cb642a
这个token记住,其他node加入master就靠这句了;
7.将docker和kubelet设置为开机启动并启动;
systemctl enable docker;
systemctl enable kubelet;
systemctl start docker;
systemctl start kubelet;
8.安装网络插件,好像1.13.x后版本自动就靠kubeadm下载了;
kubectl apply -f http://mirror.faasx.com/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml
这时master基本就算搭建好了;
9.配置node节点,加入master;
同样关闭虚拟内存及防火墙
同样安装docker,kubelet,kubeadm,这里可以不安装命令行软件kubectl了;
同样添加开机启动及启动;
然后就是输入刚才的token join加入命令;
就会出现类似于请到master主机中执行kubectl get nodes查看节点的命令;
此时应该就可以成功加入到master了;
___如果你能科学上网,那么就省了上面自己拉镜像一步了,kubeadm能够完全帮你自动的配置很多东西_____
10.说下我遇到的奇葩问题;
(1) node死活在master上看不到,kubectl get nodes只能看到master;折腾了半天,检查是不是代理的问题啊,各种删除重新安装node啥的.都不行.
~~然后想到是不是hostname名称一样了,一看还真是;
~~于是我vim /etc/hostname 改了个名字就重启了,然后重新加入操作,并没有成功;
~~于是我失望的试了试启动个pod吧,结果在node节点上也看到了启动的pod,这不是加入master成了吗,又检查hostname.奶奶的又变回去了....
~~于是百度.ubuntu18版本修改hostname需要修改的同时,修改 /etc/cloud/cloud.cfg 文件中的preserve_hostname: true为true;重启后成功....
~~而且,这个名字不支持下划线,可以是 '-'
~~并且如果你启动pod的话,会在node和master上启动相同数量的pod;改名后则变正常:如:
来源:CSDN
作者:myth_gy
链接:https://blog.csdn.net/myth_g/article/details/85098561