kubeadm 搭建 Kubernetes 集群

网友投稿 885 2022-10-26

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

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-master192.168.232.130
k8s-node-2192.168.232.129
k8s-node-1192.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 节点)

协议方向端口范围作用使用者
TCP入站6443*Kubernetes API 服务器所有组件
TCP入站2379-2380etcd 服务器客户端 APIkube-apiserver, etcd
TCP入站10250Kubelet APIkubelet 自身、控制平面组件
TCP入站10251kube-schedulerkube-scheduler 自身
TCP入站10252kube-controller-managerkube-controller-manager 自身

6.2 Worker nodes (工作节点)

协议方向端口范围作用使用者
TCP入站10250Kubelet APIkubelet 自身、控制平面组件
TCP入站30000-32767NodePort 服务所有组件

注意 : 使用 * 标记的端口可以被占用, 其余需验证开放状态

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. 错误

上一篇:如何从零开始编写一个Kubernetes CRD
下一篇:Oracle Exadata Smart Scan 智能扫描特性详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~