kubernetes 安装kubeadm - alx696/share GitHub Wiki
参考官方文档,在Ubuntu 18.04 Server中安装kubeadm。
测试发现Btrfs文件系统不被支持。
$ wget https://get.docker.com -O get-docker.sh && \
sudo sh get-docker.sh --mirror Aliyun && \
sudo usermod -aG docker $USER && \
sudo nano /etc/docker/daemon.json
添加如下内容:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"registry-mirrors": ["https://dockerhub.mirrors.nwafu.edu.cn/"]
}
重启,$ docker -v
验证是否安装成功,输出字样:Docker version ...
说明成功。
参考官方文档,参考安装配置Docker文档。
注意官方文档中的
/etc/docker/daemon.json
配置!
修改源文件:
$ sudo nano /etc/apt/sources.list
添加:
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
保存后执行:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A030B21BA07F4FB && \
sudo apt update && \
sudo apt install -y kubelet kubeadm kubectl && \
sudo apt-mark hold kubelet kubeadm kubectl
执行$ kubeadm version
验证安装是否成功,如果成功输出字样为:kubeadm version: &version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3" ...
。
$ sudo swapoff -a
$ sudo nano /etc/fstab
在/swap.img ...
行前面添加#
,将行注释掉!重启!
$ sudo reboot
修改主节点名称:
$ sudo hostnamectl set-hostname nm
nm
就是名称,从节点可以设为n1,n2这种,记得分别修改。
这些镜像时组件集群必须的,因为万恶的防火墙,无法从k8s.gcr.io下载!暂时只能通过好心网友的镜像替代,具体为先下载替代镜像然后修改tag:
docker pull aiotceo/kube-apiserver:v1.17.9 && \
docker pull aiotceo/kube-controller-manager:v1.17.9 && \
docker pull aiotceo/kube-scheduler:v1.17.9 && \
docker pull aiotceo/kube-proxy:v1.17.9 && \
docker pull aiotceo/pause:3.1 && \
docker pull aiotceo/etcd:3.4.3-0 && \
docker pull aiotceo/coredns:1.6.5 && \
docker tag aiotceo/kube-apiserver:v1.17.9 k8s.gcr.io/kube-apiserver:v1.17.9 && \
docker tag aiotceo/kube-controller-manager:v1.17.9 k8s.gcr.io/kube-controller-manager:v1.17.9 && \
docker tag aiotceo/kube-scheduler:v1.17.9 k8s.gcr.io/kube-scheduler:v1.17.9 && \
docker tag aiotceo/kube-proxy:v1.17.9 k8s.gcr.io/kube-proxy:v1.17.9 && \
docker tag aiotceo/pause:3.1 k8s.gcr.io/pause:3.1 && \
docker tag aiotceo/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0 && \
docker tag aiotceo/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5 && \
docker save -o k8s.tar k8s.gcr.io/kube-apiserver:v1.17.9 k8s.gcr.io/kube-controller-manager:v1.17.9 k8s.gcr.io/kube-scheduler:v1.17.9 k8s.gcr.io/kube-proxy:v1.17.9 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.4.3-0 k8s.gcr.io/coredns:1.6.5
上门拉取和打包镜像只需在主节点进行,其它节点直接导入镜像包可以节省时间。
注意:需要确保每行代码成功执行!每个节点使用前都需要镜像包k8s.tar中的镜像!
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
如果没有问题等待一会输出如下字样:
kubeadm join 192.168.1.2:6443 --token ...
,说明初始化完成。
注意:妥善保存kubeadm join...
内容,后面加入节点到集群中时需要!
$ mkdir -p $HOME/.kube && \
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && \
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
执行
$ kubectl get pods --all-namespaces
查看状态,直到全部Running。例如:
u@nm:~$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-77d6cbc65f-5hf6d 1/1 Running 0 2m5s
kube-system calico-node-7n8sm 1/1 Running 0 2m5s
kube-system coredns-6955765f44-c576q 1/1 Running 0 18m
kube-system coredns-6955765f44-tj92c 1/1 Running 0 18m
kube-system etcd-nm 1/1 Running 0 18m
kube-system kube-apiserver-nm 1/1 Running 0 18m
kube-system kube-controller-manager-nm 1/1 Running 0 18m
kube-system kube-proxy-zhgbx 1/1 Running 0 18m
kube-system kube-scheduler-nm 1/1 Running 0 18m
u@nm:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
nm Ready master 21m v1.17.3
在从节点上进行拉取初始镜像以上步骤安装kubeadm,然后执行下面命令加入集群:
$ sudo kubeadm join 192.168.1.2:6443 --token 2zmgla.fk3p79a4ksg70i0s \
--discovery-token-ca-cert-hash sha256:802d48dfc53cef762829b2e3aa8f9fc7c8b13b135e9d26d471006f5433424831
输出字样
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
说明加入成功,在主节点中执行命令可以验证:
u@nm:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
n1 Ready <none> 4m23s v1.17.3
nm Ready master 34m v1.17.3
在nm节点上面执行的结果。