# 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
```