# centos-install-k8s(新手版) **Repository Path**: mustnova/centos-install-k8s ## Basic Information - **Project Name**: centos-install-k8s(新手版) - **Description**: ansible安装k8s 1.26,新手版 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-03-18 - **Last Updated**: 2025-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # k8s安装+新手学习使用 #### 介绍 #使用ansible快速安装k8s
#实验环境centos7+内核5.4.276-1.el7.elrepo.x86_64
#### 准备工作 ##安装ansible ``` yum install -y epel-release yum install -y ansible ``` ##配置ansible ``` ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.137 ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.138 ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.139 ``` ##ansible服务器下准备文件/home/k8s-install-soft/
- /k8s-install-soft/kubernetes-server-linux-amd64.tar.gz #k8s二进制包 - /k8s-install-soft/nerdctl #containerd客户端命令 - /k8s-install-soft/nginx-1.24.0.tar.gz #负载均衡 - /k8s-install-soft/runc1.1.4.amd64 #规范的轻量级容器运行时,它直接与内核交互来创建和运行容器 - /k8s-install-soft/cni-plugins-linux-amd64-v1.1.1 - /k8s-install-soft/keepalived - /k8s-install-soft/kubectl - /k8s-install-soft/etcd-v3.5.13-linux-amd64.tar.gz - /k8s-install-soft/docker-23.0.6.tgz - /k8s-install-soft/cri-dockerd-0.3.2.amd64.tgz - /k8s-install-soft/containerd-1.6.17-linux-amd64.tar.gz - /k8s-install-soft/chronyd #时间同步工具 - /k8s-install-soft/cfssljson - /k8s-install-soft/cfssl-certinfo - /k8s-install-soft/cfssl 链接:https://pan.baidu.com/s/1BFClIK9lR7ya_Lez0laMbA
提取码:a1i7 #### 使用说明 1. 需要修改yml文件的少量参数(可根据自己的需求修改) 2. 可以根据不同需求单独安装,PS:如果只想安装docker,只要执行ansible-playbook centos-install-docker.yml即可 ##生成ca证书 ``` ansible-playbook centos-create-ca-cert.yml ``` ##准备工作 ``` ansible-playbook centos-k8s-prepare.yml ansible-playbook centos-install-chrony.yml ``` ##安装etcd数据库 ``` ansible-playbook centos-create-etcd-cert.yml ansible-playbook centos-install-etcd.yml ``` ##安装containerd ``` ansible-playbook centos-install-containerd.yml ``` ##安装docker ``` ansible-playbook centos-install-docker.yml ``` ##安装keepalived ``` ansible-playbook centos-install-keepalived.yml ``` ##安装nginx ``` ansible-playbook centos-install-nginx.yml ``` ##生成k8s证书 ``` ansible-playbook centos-create-k8s-master-cert.yml ansible-playbook centos-create-k8s-node-cert.yml ``` ##安装k8s ``` ansible-playbook centos-install-k8s-master.yml ansible-playbook centos-install-k8s-node.yml ``` ##一键扩展k8s节点
1.修改hosts ``` [addk8snodeservers] 10.0.1.146 10.0.1.147 10.0.1.148 ``` 2.执行扩展节点脚本 ``` ansible-playbook centos-add-k8s-node.yml ``` ##安装calico ``` kubectl apply -f calico.yml ``` #### 出现问题 ##问题1: Readiness probe failed: caliconode is not ready: BIRD is not ready
修改配置 ``` - name: IP value: "autodetect" - name: IP_AUTODETECTION_METHOD value: "interface=eth*" ``` 关于IP_AUTODETECTION_METHOD这个参数说明 ``` first-found:把本机网卡的所有IP列出来,然后选择第一个IP(docker0与lo网卡的IP会被忽略掉),第一个IP会因为操作系统的不同而不同,比如在centos操作系统中,假设网卡ens33有一个IP 192.168.92.101,网卡ens37有两个IP 192.168.90.101(primray)和192.168.90.10(second),那么找到的IP就是192.168.90.101(好像是按每个网卡的primary IP升序排列) kubernetes-internal-ip:使用K8S节点的internal-ip,我们通过kubectl get node -o wide可以看到每个节点的internal-ip是多少 can-reach=x.x.x.x:通过哪个IP能到达x.x.x.x,就选择哪个IP。如果一个网卡有多个IP,都可以到达x.x.x.x,则选择哪一个(待验证)。另外x.x.x.x可以换成域名比如can-reach=www.baidu.com interface=INTERFACE-REGEX:通过interface的名字正则表达式来寻找IP,比如interface=ens33或interface=ens*。 skip-interface=INTERFACE-REGEX:先过滤掉某些网卡,然后使用first-found方法。 cidr=CIDR:通过CIDR来寻找。比如cidr=192.168.92.0/24,某主机有网卡ens33(192.168.92.101)和ens37(192.168.90.101),那么选择的IP就是192.168.92.101 ``` 配置完后执行命令,如果显示如下,则说明没有问题
kubectl exec -it calico-node-2fx9q -n kube-system -- bash
``` [root@k8s-node1 home]# /bin/calico-node -bird-ready 2024-04-26 00:35:38.513 [INFO][25875] confd/health.go 180: Number of node(s) with BGP peering established = 2 ``` 如果还是报错就重启containerd ##错误2:invalid capacity 0 on image filesystem 解决方法重启一下containerd ``` systemctl restart containerd ```