如何通过 kubeadm手工搭建一个 kubernetes 测试学习的集群
通过kubeadm手工部署kubenetes测试学习集群
1 环境
KVM 虚拟机(基于CentOS7.7,并注意/etc/resolv.conf不要超过3个,并且禁用swap swapoff -a -v
)两台
- master IP 190.190.190.144
- node IP 190.190.190.145
2 部署的简要步骤
2.1 安装用到的软件包
2.2 节点的配置
2.3 初始化集群的master节点
2.4 导入集群的网络
2.5 将node节点加入集群
3 部署的详细步骤
3.1 安装用到的软件包
3.1.1 [master和node节点] 配置”kubelet”, “kubeadm”, “kubectl” 依赖的repo
1 2 3 4 5 6 7 8 9
| cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
|
1
| # yum install -y yum-utils device-mapper-persistent-data lvm2 docker kubelet kubeadm kubectl
|
3.2 节点的配置
3.2.1 [master和node节点] 设置主机名,配置hosts,设置sysctl,停掉SELINUX和firewalld,使能daemons
3.2.1.1 设置主机名
[master节点]
1
| # hostnamectl set-hostname vm40master144
|
[node节点]
1
| # hostnamectl set-hostname vm40node145
|
3.2.1.2 [master和node节点] 配置hosts
1
| # echo -e "190.190.190.144 vm40master144\n190.190.190.145 vm40node145" >>/etc/hosts
|
3.2.1.3 [master和node节点] 设置sysctl
1
| # echo -e "net.ipv4.ip_forward=1\nnet.bridge.bridge-nf-call-ip6tables=1\nnet.bridge.bridge-nf-call-iptables=1\nnet.bridge.bridge-nf-call-arptables=1" >>/etc/sysctl.conf && sysctl -p
|
3.2.1.4 [master和node节点] 停掉SELINUX
1
| # sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux && setenforce 0
|
3.2.1.5 [master和node节点] 停掉firewalld
1
| # systemctl disable firewalld --now
|
3.2.1.6 [master和node节点] 使能daemons
1
| # systemctl enable kubelet --now && systemctl enable docker --now
|
3.3 [master节点] 初始化集群的master节点 (pod-network-cidr必须加,service-cidr可选,ignore-preflight-errors可选all忽略所有错误,注意把执行完成后的”kubeadm join xxx”记录下来。
1 2
| # kubeadm init --pod-network-cidr=220.220.220.0/24 # cp /etc/kubernetes/admin.conf ~/.kube/config
|
注意: kubeadm的安装过程不涉及网络插件(CNI)的初始化,因此kubeadm初步安装完成的集群不具备网络功能,任何Pod包括自带的CoreDNS都无法正常工作. 而网络插件的安装往往对kubeadm init命令的参数有一定的要求. 例如,安装flannel插件时
需要指定类似–pod-network-cidr=220.220.220.0/24, 详情可参考pod-network
3.3.1 [master节点-可选]部署完毕,可以执行下面的命令让其他用户也可以使用(如果直接用root,可以只执行下面mkdir, cp admin.conf的动作)
1 2 3
| # mkdir -p $HOME/.kube # sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # sudo chown $(id -u):$(id -g) $HOME/.kube/config
|
3.4 [master节点] 导入集群的网络kube-flannel.yml (如将文件放在/opt目录, 可以直接wget)
1
| # kubectl apply -f /opt/kube-flannel.yml
|
3.5 [node节点] 将node节点加入集群(join的信息在步骤3.3)
1
| # kubeadm join 190.190.190.144:6443 --token mcwpl9.c8235qnndhnbc7jc --discovery-token-ca-cert-hash sha256:83dcb922fca5b4d045808beca203069fa13cdd4ef3092db8f2f58864e1ccedfc
|
3.6 到此,部署结束(如安装失败,可以使用reset,再init一次, 参考附录信息).
4 附录
- [master节点- 要使用]
1 2
| # kubeadm reset # kubeadm init --pod-network-cidr=10.244.0.0/16
|
- [node节点-token 是有时间限制的,如果超时,重新生成]
1 2 3
| # kubeadm reset # kubeadm join 190.190.190.144:6443 --token mcwpl9.c8235qnndhnbc7jc --discovery-token-ca-cert-hash sha256:83dcb922fca5b4d045808beca203069fa13cdd4ef3092db8f2f58864e1ccedfc # kubeadm token create
|