该笔记将记录:在 Ubuntu 20.04.4 LTS 中,如何搭建 Kubernetes 1.20.15 集群(供测试使用),以及相关问题处理;
环境配置(每个节点上都要执行)
安装 Docker 环境:Installing Docker on Ubuntu
修改 Docker 配置:
cat > /etc/docker/daemon.json <<EOF { "live-restore": true, "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF systemctl start docker systemctl enable docker systemctl reload docker systemctl restart docker
安装程序:
# 首先,安装依赖工具 apt-get update \ && apt-get install -y apt-transport-https ca-certificates curl # 然后,导入仓库密钥 # 尽管下载 apt-key.gpg 存在困难,但是应该尽量从官方站点下载(请勿随意使用第三方密钥) # curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FEEA9169307EA071 8B57C5C2836F4BEB B53DC80D13EDEF05 cat > /etc/apt/sources.list.d/kubernetes.list <<EOF deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF apt-get update # 最后,安装工具 apt-get install -y kubelet=1.22.17-00 kubeadm=1.22.17-00 kubectl=1.22.17-00 apt-mark hold kubelet kubeadm kubectl # 禁止更新
集群初始化(在主节点上初始化集群)
# 初始化 Master 节点 # 该命令最终会输出一条指令,需要在各个节点上执行,以加入集群; kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --image-repository registry.aliyuncs.com/google_containers
向集群中加入节点(在工作节点上执行)
# kubeadm init 执行成功后,会产生一个 token,用于向集群中加入节点; # 在 Worker 中,执行: kubeadm join --token <token> # 在 Master 中,查看集群信息 kubeadm get nodes
安装网络插件
# 创建满足 Kubernetes 要求的网络,尤其是给每个 Pod 分配一个 IP 地址; # 网络插件有很多,可以参考: # https://kubernetes.io/docs/concepts/cluster-administration/addons/#networking-and-network-policy # 安装 Flannel 网络: kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
当网络配置结束后,节点进入 READY 状态
查看集群状态
# kubectl get nodes NAME STATUS ROLES AGE VERSION work-testing-168 Ready <none> 2m20s v1.20.15 work-testing-169 Ready <none> 2m47s v1.20.15 master-node-160 Ready control-plane,master 6m5s v1.20.15
使用问题处理
允许 Master 节点调度 Pod
coreos – Allow scheduling of pods on Kubernetes master? – Stack Overflow
kubectl taint nodes --all node-role.kubernetes.io/master-
参考文献
阿里云 kubernetes yum 仓库镜像
使用 kubeadm 初始化 k8s 环境使用非官方的 k8s.gro.io 镜像仓库就无法正常初始化 #67865
一、k8s 主机系统环境配置
kubelet 1.11 won’t start because /var/lib/kubelet/config.yaml is missing/empty on brand new install #66108
kubeadm init
How to install Kubernetes with Kubeadm: A quick and dirty guide
How to gracefully remove a node from Kubernetes?
GitHub – flannel-io/flannel: flannel is a network fabric for containers, designed for Kubernetes
Creating a single control-plane cluster with kubeadm
centos7 添加 bridge-nf-call-ip6tables 出现 No such file or directory
Creating a single master cluster with kubeadm