如何在智能告警平台CA触发测试告警
885
2022-10-26
kubeadm 搭建 Kubernetes 集群
1. Kubeadm方式搭建K8S集群概要
准备三台虚拟机,同时安装操作系统CentOS 7.x虚拟机或云服务器在条件允许的情况下尽量制作快照对三个安装之后的操作系统进行初始化操作在三个节点安装 docker kubelet kubeadm kubectl在master节点执行kubeadm init命令初始化在node节点上执行 kubeadm join命令,把node节点添加到当前集群配置CNI网络插件,用于节点之间的连通【科学上网】通过拉取一个nginx进行测试,能否进行外网测试步骤 14 存在错误解决步骤
2. 安装要求
硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多【注意master需要两核】可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点禁止swap分区
3. 准备环境
角色 | IP |
---|---|
k8s-master | 192.168.232.130 |
k8s-node-2 | 192.168.232.129 |
k8s-node-1 | 192.168.232.128 |
4. 初始化系统
4.1. ip addr 无 IP
4.2. 修改 各服务器的 设置主机名
hostnamectl set-hostname
4.3. 关闭防火墙(保证安全情况下[生产注意])
systemctl stop firewalld
4.4. 永久关闭防火墙(可选)
4.5. 关闭selinux
4.6. 关闭swap
4.7. 将桥接的IPv4流量传递到iptables的链(重要)
4.8 确保每个节点上 MAC 地址和 product_uuid 的唯一性
使用命令 ip link 或 ifconfig -a 来获取网络接口的 MAC 地址,可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验,一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。Kubernetes 使用这些值来唯一确定集群中的节点。如果这些值在每个节点上不唯一,可能会导致安装 失败。
检查网络适配器
4. 9. 时间同步,久一点 (可选)
yum install ntpdate -yntpdate time.windows.co
5. 安装Docker
5. 1. 首先配置一下Docker的阿里yum源
cat >/etc/yum.repos.d/docker.repo< 5.2. 然后yum方式安装docker 5.3. 查看 docker 版本( 校验 安装成功 ) 5.4. 启动 docker (会生成一些 docker本身配置文件) systemctl enable dockersystemctl start docker 5.5. 配置 docker 镜像源 (阿里镜像源速度块) cat >> /etc/docker/daemon.json << EOF{ "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]}EOF# 重启 docker systemctl restart docker 5.6. 校验 docker 镜像源配置完成 6. 校验以下 port 不被占用 6.1 Control-plane nodes (master 节点) 6.2 Worker nodes (工作节点) 注意 : 使用 * 标记的端口可以被占用, 其余需验证开放状态 7. 添加kubernetes软件源 cat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF 8. 安装kubeadm,kubelet和kube在这里插入代码片ctl 方式(一) 安装kubelet、kubeadm、kubectl 未指定版本 `建议使用方式二具体查看 XX 搭建错误`yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes方式(二)安装kubelet、kubeadm、kubectl,同时指定版本 `避开 XX. 搭建错误`yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 9. 设置开机启动 systemctl enable --now kubelet 10 . 查看安装版本 kubectl version 11. 部署Kubernetes Master 【master节点】 注意 : 只在 master 节点执行, 只在 master 节点执行, 只在 master 节点执行, 重要的事情说三遍 kubeadm init --apiserver-advertise-address=192.168.232.130 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16 –apiserver-advertise-address : Control-plane 地址 (master 节点地址)–image-repository : k8s 镜像源 (阿里云镜像源)–kubernetes-version : 安装版本其他两个是 集群交互地址 11.1 pull images 11.2 pull image 进行中查看 12. 搭建成功 12.1 搭建展示 红色框中容易卡住, 首先排查 kubectl, kubiadm 是否安装成功, 校验服务器可以上网需在 master 节点执行 蓝色框中代码黄色框中代表 node节点执行加入 master节点 12.2 node 加入集群 # kubeadm init 成功后提示信息中可获取 kubeadm join 192.168.186.136:6443 --token z5n06u.rg7hvmxpsx15nfot --discovery-token-ca-cert-hash sha256:0c2775e3c5f45be1d60cca3de27bcbcd2b65a491072a2f5f9b497aea3582fd28 12.2 查看 集群状态 kubectl get node NotReady : 准备就绪状态 12.3 部署CNI网络插件 # 添加kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 13. 测试集群 在Kubernetes集群中创建一个pod,验证是否正常运行# 下载nginx 会联网 pull nginx imagekubectl create deployment nginx --image=nginx# 查看状态kubectl get pod# 暴露端口kubectl expose deployment nginx --port=80 --type=NodePort# 查看一下对外的端口kubectl get pod,svc 14. 搭建错误 (建议错误后,除 CPU不足外,建议恢复快照重新安装) 1. 错误 error: Missing or incomplete configuration info. Please point to an existing, complete config file: Via the command-line flag --kubeconfigVia the KUBECONFIG environment variableIn your home directory as ~/.kube/config To view or setup config directly use the ‘config’ command. 解决 : vim /etc/profile 新增一行 export KUBERNETES_MASTER="127.0.0.1:8080" 保存退出 source /etc/profile 刷新环境变量 2. 错误 [preflight] You can also perform this action in beforehand using ‘kubeadm config images pull’error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR ImagePull]: failed to pull image registry.aliyuncs.com/google_containers/coredns:v1.8.0: output: Error response from daemon: manifest for registry.aliyuncs.com/google_containers/coredns:v1.8.0 not found: manifest unknown: manifest unknown, error: exit status 1[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...To see the stack trace of this error execute with --v=5 or higher在阿里云镜像中未找到 当前 安装版本, 只发现 1.8 版本 解决 : 卸载 kubectl , kubeadm, kubernetes-cni kubeadm reset yum erase -y kubelet kubectl kubeadm kubernetes-cni# kubeadm init pull images 全部删除干净docker rmi -f registry.aliyuncs.com/google_containers/kube-apiserver (IMAGE ID ) docker rmi -f registry.aliyuncs.com/google_containers/kube-scheduler (IMAGE ID ) docker rmi -f registry.aliyuncs.com/google_containers/kube-proxy (IMAGE ID ) docker rmi -f registry.aliyuncs.com/google_containers/kube-controller-manager (IMAGE ID )docker rmi -f registry.aliyuncs.com/google_containers/pause (IMAGE ID ) docker rmi -f registry.aliyuncs.com/google_containers/etcd (IMAGE ID ) docker images 3. 错误 4. 错误协议 方向 端口范围 作用 使用者 TCP 入站 6443* Kubernetes API 服务器 所有组件 TCP 入站 2379-2380 etcd 服务器客户端 API kube-apiserver, etcd TCP 入站 10250 Kubelet API kubelet 自身、控制平面组件 TCP 入站 10251 kube-scheduler kube-scheduler 自身 TCP 入站 10252 kube-controller-manager kube-controller-manager 自身 协议 方向 端口范围 作用 使用者 TCP 入站 10250 Kubelet API kubelet 自身、控制平面组件 TCP 入站 30000-32767 NodePort 服务 所有组件
发表评论
暂时没有评论,来抢沙发吧~