wordpress只能做博客吗,巩义企业网站快速优化多少钱,精品课网站怎么做,湖州吴兴建设局网站使用kubeadm构建kubernets集群 一、准备工作1、repo源配置#xff1a;阿里巴巴开源镜像源2、更新软件包并安装必要的系统工具3、同步时间4、禁用selinux5、禁用交换分区swap6、关闭防火墙 二、安装docker-ce、docker、cri-docker1、安装docker-ce2、开启内核转发#xff0c;转… 使用kubeadm构建kubernets集群 一、准备工作1、repo源配置阿里巴巴开源镜像源2、更新软件包并安装必要的系统工具3、同步时间4、禁用selinux5、禁用交换分区swap6、关闭防火墙 二、安装docker-ce、docker、cri-docker1、安装docker-ce2、开启内核转发转发 IPv4 并让 iptables 看到桥接流量执行下述指令3、安装docker4、安装cri-dockerd 三、安装kubernets1、配置源2、安装kubelet、kubeadm、kubectl3、使用 kubeadm 创建集群1查找需要的镜像文件2下载镜像并改成上图需要的名称3初始化该步骤只需要在 master 服务器上执行即可。4重要信息 四、安装通信插件1、获取 yaml 文件2、查看需要用到的镜像文件3、解压后加载镜像4、执行命令 kubectl apply -f calico.yaml5、将 node 节点加入集群。 五、排错1、在 node 节点执行命令 kubectl apply -f calico.yaml 时出现如下错误此时你执行 kubectl get nodes 命令也会出现类似的错误。原因分析解决方法 写在最后讲一讲我的排错思路。 Kubernets 为绝大部分的操作系统平台都提供了相应的软件包。通过软件包来安装Kubernets 是一种最为简单的安装方式。对于初学者来说通过这种方式可以快速搭建起 kubernets 的运行环境。本章我以 CentOS7.9 为例使用 kubeadm 构架 kubernets 集群。 一、准备工作
操作系统hostnameIPCPU内存kubernet versioncentos7.9master192.168.111.119/242核2G1.28.12centos7.9node1192.168.111.120/242核2G1.28.12centos7.9node2192.168.111.121/242核2G1.28.12centos7.9node3192.168.111.122/242核2G1.28.12
1、repo源配置阿里巴巴开源镜像源
# 删除系统包管理器下的所有源配置文件
sudo rm -rf /etc/yum.repos.d/*
# 下载阿里巴巴开源镜像源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 创建 YUM 缓存
sudo yum makecache2、更新软件包并安装必要的系统工具
# 安装必要工具
sudo yum install -y bash-completion lrzsz ntpdate ntp wget lsof telnet
sudo yum install -y update
# 修改主机名
hostnamectl set-hostname master
bash
# 修改hosts文件将hostname、ip更新至/etc/hosts文件中
echo 192.168.111.119 master /etc/hosts
echo 192.168.111.120 node1 /etc/hosts
echo 192.168.111.121 node2 /etc/hosts3、同步时间
sudo ntpdate -u ntp.aliyun.com4、禁用selinux
# 将 SELinux 设置为 permissive 模式相当于将其禁用
sudo sestatus
sudo setenforce 0
sudo sed -i s/^SELINUXenforcing$/SELINUXdisabled/ /etc/selinux/config5、禁用交换分区swap
# 不建议使用 sudo swapoff -a 该命令临时禁用交换分区而是直接编辑 /etc/fstab 文件将如下图所示的内容注释掉。
vi /etc/fstab
# 查看修改操作是否生效
sudo grep swap /etc/fstab6、关闭防火墙
sudo systemctl disable firewalld --now
sudo systemctl status firewalld二、安装docker-ce、docker、cri-docker
1、安装docker-ce
# 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i sdownload.docker.commirrors.aliyun.com/docker-ce /etc/yum.repos.d/docker-ce.repo# 安装指定版本的Docker-CE:
# 查找Docker-CE的版本:
yum list docker-ce.x86_64 --showduplicates | sort -r|grep 19.03
yum list docker-ce.x86_64 --showduplicates | sort -r|grep 3:19.03.15-3.el7
# 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
sudo yum clean all
sudo yum makecachesudo yum install -y docker-ce-19.03.15
sudo systemctl enable docker --now2、开启内核转发转发 IPv4 并让 iptables 看到桥接流量执行下述指令
cat EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFsudo modprobe overlay
sudo modprobe br_netfilter# 设置所需的 sysctl 参数参数在重新启动后保持不变
cat EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables 1
net.bridge.bridge-nf-call-ip6tables 1
net.ipv4.ip_forward 1
EOF# 应用 sysctl 参数而不重新启动
sudo sysctl --system
# 通过运行以下指令确认 br_netfilter 和 overlay 模块被加载
lsmod | grep br_netfilter
lsmod | grep overlay
# 通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward3、安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 配置 Docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json -EOF
{exec-opts: [native.cgroupdrivercgroupfs],registry-mirrors: [https://cyzzkyky.mirror.aliyuncs.com],log-driver: json-file,log-opts: {max-size: 10m,max-file: 3},storage-driver: overlay2,experimental: true,features: {buildkit: true}
}
EOF
sudo systemctl daemon-reload
sudo systemctl enable docker --now
sudo systemctl status docker 4、安装cri-dockerd
sudo wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.14/cri-dockerd-0.3.14-3.el7.x86_64.rpmsudo rpm -ivh cri-dockerd-0.3.14-3.el7.x86_64.rpm
sudo rpm -ql cri-dockerd
# sudo vi /etc/containerd/config.toml
# sudo grep disa /etc/containerd/config.toml
# disabled_plugins [cri]
sudo systemctl enable cri-docker.service --now
sudo systemctl status cri-docker.service三、安装kubernets
1、配置源
sudo cat EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled1
gpgcheck0
gpgkeyhttps://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF2、安装kubelet、kubeadm、kubectl
sudo yum install -y kubelet kubeadm kubectl --disableexcludeskubernetes3、使用 kubeadm 创建集群
1查找需要的镜像文件
# 查看需要的镜像文件
kubeadm config images list2下载镜像并改成上图需要的名称
# 下载镜像
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.12
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.12
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.12
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.28.12
docker pull registry.aliyuncs.com/google_containers/pause:3.9
docker pull registry.aliyuncs.com/google_containers/etcd:3.5.12-0
docker pull registry.aliyuncs.com/google_containers/coredns:v1.10.1
# 重命名镜像
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.12 registry.k8s.io/kube-apiserver:v1.28.12
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.12 registry.k8s.io/kube-controller-manager:v1.28.12
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.12 registry.k8s.io/kube-scheduler:v1.28.12
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.28.12 registry.k8s.io/kube-proxy:v1.28.12
docker tag registry.aliyuncs.com/google_containers/pause:3.9 registry.k8s.io/pause:3.9
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.12-0 registry.k8s.io/etcd:3.5.12-0
docker tag registry.aliyuncs.com/google_containers/coredns:v1.10.1 registry.k8s.io/coredns/coredns:v1.10.13初始化该步骤只需要在 master 服务器上执行即可。
以下内容只需 master 服务器执行即可
# 重置
sudo kubeadm reset --cri-socketunix:///var/run/cri-dockerd.sock
# 初始化
sudo kubeadm init --kubernetes-versionv1.28.10 --pod-network-cidr10.224.0.0/16 --apiserver-advertise-address192.168.111.119 --image-repository registry.aliyuncs.com/google_containers --cri-socketunix:///var/run/cri-dockerd.sock以上内容只需 master 服务器执行即可 当出现如下内容则表示安装成功。
4重要信息 根据提示依次执行如下命令 mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/configkubeadm join 192.168.111.115:6443 --token vhqvk4.fkbpwefn6l2r56wr --discovery-token-ca-cert-hash sha256:116ab3b7ff9f2c5b1658281e0258a9edca724af28f10c4624d219f6c4a4b97ef该命令是 node 节点加入集群的凭证需要保存好。
此时执行 kubectl get nodes 命令会出现 NotReady 状态这个时候我们就需要安装通信插件。
四、安装通信插件
1、获取 yaml 文件
sudo wget https://projectcalico.docs.tigera.io/manifests/calico.yaml2、查看需要用到的镜像文件
grep image calico.yaml由于一些原因该镜像无法正常pull附载链接请自行下载。 链接https://pan.baidu.com/s/1UvKWKUz_K-Kierr3ncskdw?pwd0o0n 提取码0o0n
3、解压后加载镜像
tar zxvf release-v3.25.0.tgz
cd release-v3.25.0/images/
docker load -i calico-cni.tar
docker load -i calico-node.tar
docker load -i calico-kube-controllers.tar4、执行命令 kubectl apply -f calico.yaml
测试 kubectl get nodes状态即为 Ready 状态。
5、将 node 节点加入集群。
# 在node节点中执行即可将 node 节点加入集群
kubeadm join 192.168.111.115:6443 --token vhqvk4.fkbpwefn6l2r56wr --discovery-token-ca-cert-hash sha256:116ab3b7ff9f2c5b1658281e0258a9edca724af28f10c4624d219f6c4a4b97ef五、排错
1、在 node 节点执行命令 kubectl apply -f calico.yaml 时出现如下错误此时你执行 kubectl get nodes 命令也会出现类似的错误。 原因分析 报错信息中提到了连接被拒绝并指出了连接的主机和端口为localhost:8080。这个错误通常是由于kubectl无法与Kubernetes API服务器建立连接导致的。Kubernetes API服务器是集群的控制平面负责管理集群的各种操作和资源。当kubectl无法连接到API服务器时就无法获取节点的信息从而导致了报错。 说的直白一点就是没有找到你的 kubernets API 解决方法 1、将 master 服务器 /etc/kubernetes/admin.conf 文件拷贝到该节点服务器相对应目录下。
scp root192.168.111.119:/etc/kubernetes/admin.conf /etc/kubernetes/2、在用户目录下创建文件夹 .kube 并将 /etc/kubernetes/admin.conf 文件拷贝到 .kube目录下并命名为config。
mkdir -p ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config3、将.kube/config文件的所有者更改为当前用户。
chown $(id -u):$(id -g) $HOME/.kube/config问题解决
写在最后讲一讲我的排错思路。
首先要确保交换分区已经关闭 其次查看docker运行状态是否正常systemctl status docker 再看cri-docker运行状态是否正常systemctl status cri-docker 再次看kubelet运行状态是否正常systemctl status kubelet 如果以后都正常则看容器是否启动。docker ps
本章内容就到这里大家在安装过程中遇到任何问题评论区留言我第一时间为大家解答。