主节点创建流程

1.基础环境配置
2.安装docker和kubelet 拉取flannel
3.生成init配置,拉取镜像 
4. 清空config.toml 重启 containerd
5. kubeadm init 查看检测错误拉取k8s.gcr.io/pause:3.5 镜像并tag 
6. mkdir -p $HOME/.kube
7.应用网络 kubectl apply -f kube-flannel.yml
8.检查日志是否报错 tail -f /var/log/messages

三 创建Master

  • 3.1 妆初始化配置文件
  • 更换 Kubernetes 镜像仓库为阿里云镜像仓库,加速组件拉取
kubeadm config print init-defaults > init.yml
vim init-kubeadm.conf
# imageRepository: k8s.gcr.io 更换k8s镜像仓库
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
# localAPIEndpointc,advertiseAddress为master-ip ,port默认不修改
localAPIEndpoint:
  advertiseAddress: 192.168.56.101  # 此处为master的IP
  bindPort: 6443
# 配置子网络
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16    # 添加这个
  • 3.1.2 在修改完配置文件后,我们需要使用 kubeadm 拉取我们的默认组件镜像。直接使用 kubeadm config images pull 命令即可
kubeadm config images pull --config init.yml
#初始化master
kubeadm init --config   init.yml --ignore-preflight-errors=all
  • 3.2 使用命令行初始化master
#使用参数初始化
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers \
--apiserver-advertise-address=192.168.209.136 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--kubernetes-version=v1.21.1
#image-repository:镜像地址,由于默认的k8s.gcr.io无法访问,所以改用阿里云的镜像地址
# --apiserver-advertise-address: 指定master服务发布的ip地址,即节点的IP地址
# --pod-network-cidr: 指定pod网络的IP地址范围
# --service-cidr: 指定service网络的IP地址范围
#kubernetes-version:版本号
* 执行完成之后按提示执行以下命令 在主机节点当前用户home下创建.kube, 拷贝admin配置文件,赋予权限
xxxxxxxx
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
  • 3.3 安装Flannel网络
reboot
查看启动情况
kubectl get nodes
安装网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
或者
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#拉取 kube-flannel.yml 中 install-cni 下的镜像
docker pull rancher/mirrored-flannelcni-flannel:v0.17.0  #查看yaml文件
kubectl apply -f kube-flannel.yml

kubectl get nodes
  • 其它命令
kubectl cluster-info #查看集群信息

五、错误处理

  • 安装错误-不能拉镜像unknown service runtime.v1alpha2.RuntimeService
rm /etc/containerd/config.toml
systemctl restart containerd
  • 安装错误[kubelet-check] Initial timeout of 40s passed.卡住
#按提示查看报错 
systemctl status kubelet
journalctl -xeu kubelet
vim /var/log/messages
journalctl -f -u kubelet  #滚动显示
发现是
error="failed to get sandbox image \"k8s.gcr.io/pause:3.5\" #拉长可看到错误
#解决 先下载镜像,然后打 tag, 然后reset,重新
ctr -n k8s.io i pull k8s.gcr.io/pause:3.5 #测试
ctr -n k8s.io i ls -q #查看镜像

crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5 #下载
ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5  k8s.gcr.io/pause:3.5 #重命名

kubeadm reset
kubeadm init --config init.yml #重新安装