百度识图网站,上海设计装修公司排名,网站的建设及发布步骤,世界网站制作为节约时间和成本#xff0c;仅供学习使用#xff0c;直接在两台虚拟机上模拟 K8S 集群搭建 踩坑之旅
系统环境#xff1a;CentOS-7-x86_64-Minimal-2009 镜像#xff0c;为方便起见#xff0c;直接在 root 账户下操作#xff0c;现实情况最好不要这样做。
基础准备
关… 为节约时间和成本仅供学习使用直接在两台虚拟机上模拟 K8S 集群搭建 踩坑之旅
系统环境CentOS-7-x86_64-Minimal-2009 镜像为方便起见直接在 root 账户下操作现实情况最好不要这样做。
基础准备
关闭防火墙
systemctl disable firewalld
systemctl stop firewalld关闭 selinux
# 临时禁用selinux
setenforce 0# 永久关闭selinux
sed -i s/SELINUXpermissive/SELINUXdisabled/ /etc/sysconfig/selinux
sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config禁用 Swap
# 临时关闭 Swap
swapoff -a# 永久禁用 Swap
vi /etc/fstab
在swap分区这行前加 # 注释掉
#/dev/mapper/centos-swap swap设置存储库
# 安装 yum-utils 包, 并设置稳定存储库
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo安装配置 Docker
# 查看docker-ce支持版本
yum list docker-ce --showduplicates|sort -r#查看docker-ce-cli版本
yum list docker-ce-cli --showduplicates|sort -r# 指定版本号安装
#yum install -y docker-ce-24.0.4 docker-ce-cli-24.0.4 containerd.io# 默认安装最新版本
yum install docker-ce docker-ce-cli containerd.io# 启动 Docker
systemctl enable docker systemctl start docker# 查看版本
docker -v# 配置国内镜像源修改/新建 daemon.json
vi /etc/docker/daemon.json# 在 daemon.json 中添加
{registry-mirrors: [https://registry.docker-cn.com,https://docker.mirrors.ustc.edu.cn,http://hub-mirror.c.163.com,https://cr.console.aliyun.com/]
}# 重启 Docker
systemctl restart docker安装 Docker Compose
# 下载 Docker Compose
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose# 对二进制文件添加可执行权限
chmod x /usr/local/bin/docker-compose# 查看版本
docker-compose -v最好使用 GitHub 的地址如果使用其他比如 curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose有几率会出现下面错误
/usr/local/bin/docker-compose: line 1: html: No such file or directory
/usr/local/bin/docker-compose: line 2: syntax error near unexpected token
usr/local/bin/docker-compose: line 2: headtitle502 Bad Gateway/title/head搭建 K8S 集群
修改 K8S 源
cat EOF /etc/yum.repos.d/kubernetes.repo
[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled1
gpgcheck1
repo_gpgcheck1
gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF基础环境搭建完成后令当前虚拟机做 Master 主机利用虚拟机平台比如 VMWare、VirtualBox 等的克隆功能克隆一台 Worker 主机当然也可以克隆多台。注意克隆后的多台主机要保证 ip 不同不同软件的操作不同具体操作此处此处不做赘述。
Master 端安装 kubeadm、kubectl、kubelet
# 安装指定版本
# yum install -y kubeadm-1.21.3 kubelet-1.21.3 kubectl-1.21.3# 默认安装
yum install -y kubectl kubeadm kubelet# 启动 kubelet 服务
systemctl enable kubelet systemctl start kubelet# 查看版本
docker-compose versionWorker 端安装 kubeadm、kubelet
# 安装
yum install -y kubeadm kubelet# 启动 kubelet 服务
systemctl enable kubelet systemctl start kubelet启动容器运行时 containerd
# Master 端和 Worker 端都要操作
mv /etc/containerd/config.toml /etc/containerd/config.bak
containerd config default | sudo tee /etc/containerd/config.toml
systemctl restart containerd配置主机名需要同时在 Master 和 Worker 上操作 Master 节点下 # 编辑 hosts添加各个节点的映射
vi /etc/hosts# 我的 Master 主机 ip 为 192.168.65.130Worker 主机 ip 为 192.168.65.132
192.168.65.132 k8s-node1
192.168.65.130 k8s-master# Master 节点
hostnamectl --static set-hostname k8s-master# 立刻生效
hostname $hostnameWorker 节点下 vi /etc/hosts192.168.65.132 k8s-node1
192.168.65.130 k8s-master# Worker 节点
hostnamectl --static set-hostname k8s-node1# 立刻生效
hostname $hostname初始化 Master 节点
# 仅在 Master 主机上执行
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--apiserver-advertise-address192.168.65.130 \
--service-cidr10.96.0.0/12 \
--pod-network-cidr10.244.0.0/16 \
--token-ttl 0–apiserver-advertise-address192.168.65.130master 主机的 IP 地址–image-repositoryregistry.aliyuncs.com/google_containers这个是镜像地址–service-cidr10.96.0.0/12IP 地址直接就套用10.96.0.0/12–pod-network-cidr10.244.0.0/16K8S 内部的 pod 节点之间网络可以使用的 IP 段是可以更改的暂时用 10.244.0.0/16 也无所谓
初始化完成后结果如下 将这里提示的 kubeadm join xxx 命令保存下来如果忘记了也可以通过下面命令查看
kubeadm token create --print-join-command继续执行
mkdir -p ~/.kube
sudo cp -i /etc/kubernetes/admin.conf ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config将 Worker 加入到 Master 节点
# Worker 端使用上一步得到的 join 命令
kubeadm join 192.168.65.130:6443 --token 4olf44.2t6sqev73d6ewm48 --discovery-token-ca-cert-hash sha256:3603cf3bd9efa671e95a93f922f097580b1ffbfe3e55ca8b7f1876bf8fc4be69成功后的提示如下 这一步可能报错
[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1解决办法
echo 1 /proc/sys/net/bridge/bridge-nf-call-iptablesMaster 端安装 Calico 网络插件 注意Calico 的版本需要与 kubelet 匹配适配关系在 Calico 每个版本的说明都有比如我的 kubelet 是 1.21.3满足此版本的 Calico 有 3.20、3.21 https://docs.tigera.io/archive/v3.20/getting-started/kubernetes/requirements
# 下载 calico.yaml 到本地
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O# 执行
kubectl apply -f calico.yaml9. 查看节点、pod 状态
# 查看 nodes
kubelet get node# 查看 pods
kubectl get pods -n kube-system -o wide一开始节点处于 NotReady 状态 相关的 coredns 等也在启动中 经过一段时间后可以看到所有 pods 均已启动(running)节点已就绪(Ready)