一、环境规划
1、集群类型
-
2、安装方式
kubeadm: kubernetes.io 官方推荐的工具,便于快速安装 kubernetes 集群
3、主机规划
| 主机名 | IP地址 | 操作系统 | 配置 | | —- | —- | —- | —- | | Master | 192.168.0.200 | Debian 10.10 | 2核CPU 2G内存 50G硬盘 | | Node1 | 192.168.0.201 | Debian 10.10 | 2核CPU 2G内存 50G硬盘 | | Node2 | 192.168.0.202 | Debian 10.10 | 2核CPU 2G内存 50G硬盘 |
4、软件版本
Docker version:19.03.8
Kubernetes version :1.21.2
- k8s.gcr.io/kube-apiserver:v1.21.2k8s.gcr.io/kube-controller-manager:v1.21.2
- k8s.gcr.io/kube-scheduler:v1.21.2
- k8s.gcr.io/kube-proxy:v1.21.2
- k8s.gcr.io/pause:3.4.1
- k8s.gcr.io/etcd:3.4.13-0
- k8s.gcr.io/coredns/coredns:v1.8.0
- flannel: v0.14.0
二、环境初始化
下面的操作需要在_**所有节点**_上执行1、主机名解析
编辑三台服务器的/etc/hosts文件,添加下面内容192.168.0.200 master192.168.0.201 node1192.168.0.202 node2
2、时间同步
ntpdate ntp.aliyun.com echo "10 1 * * * root ntpdate ntp.aliyun.com" >> /etc/crontab3、禁用swap分区
swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab4、linux的内核参数配置
``` cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl —system
<a name="dVSTA"></a>
## 5、安装docker
```bash
apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian \
$(lsb_release -cs) \
stable"
apt-get update
apt-get install docker-ce=5:19.03.8~3-0~debian-buster docker-ce-cli=5:19.03.8~3-0~debian-buster containerd.io -y
安装docker参考菜鸟教程:
Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfsvim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
6、安装k8s组件
安装kubelet kubeadm kubectl,先配置国内源,再进行安装。
apt-get update && apt-get install -y apt-transport-https curl
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
7、拉取集群所需镜像
# 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看
kubeadm config images list
# 下载镜像
# 此镜像在kubernetes的仓库中,由于网络原因,无法连接,可以先从阿里仓库进行pull,再tag打标签。
images=(
kube-apiserver:v1.21.2
kube-controller-manager:v1.21.2
kube-scheduler:v1.21.2
kube-proxy:v1.21.2
pause:3.4.1
etcd:3.4.13-0
coredns/coredns:v1.8.0
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
# coredns/coredns:v1.8.0 镜像应该拉取不到,因为在阿里仓库 其名称为coredns:1.8.0,可以先手动拉取再打标签修改名称
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0
三、集群初始化
下面的操作只需要在_**master节点**_上执行
# 创建集群
[root@master ~]# kubeadm init \
--kubernetes-version=v1.21.2 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=192.168.0.200
# 创建必要文件
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
下面的操作只需要在_**node节点**_上执行
kubeadm join 192.168.0.200:6443 \
--token y3x5pw.xpojmk3z6hfaeg81 \
--discovery-token-ca-cert-hash \
sha256:e41091f7446e8970cac2ca4ff6d5cd848712af5c7413c0d08d39f35295894c38
四、安装网络插件
kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择flannel
下面操作依旧只在master节点执行即可**,插件使用的是DaemonSet的控制器,它会在每个节点上都运行**
wget https://kuboard.cn/install-script/flannel/flannel-v0.14.0.yaml
kubectl apply -f flannel-v0.14.0.yaml
稍等片刻,再次查看集群节点的状态
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 6m29s v1.21.2
node1 Ready <none> 2m47s v1.21.2
node2 Ready <none> 2m38s v1.21.2
至此,kubernetes的集群环境搭建完成
