使用Kubespray配置Kubernetes

本文详细介绍了如何使用Kubespray在多节点环境中配置Kubernetes,包括环境准备、关闭SELinux和防火墙、安装Kubernetes组件、在Master节点安装Ansible、配置kubespray,以及解决常见问题的FAQs,特别强调了使用阿里云镜像和处理网络及镜像拉取问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


环境配置

初始准备(所有节点)

关闭SELinux
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
关闭防火墙
systemctl stop firewalld & systemctl disable firewalld
配置k8s基础参数

创建目标文件

sudo vim /etc/sysctl.d/k8s.conf

写入以下内容

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
生成ssh-keygen

使用如下命令生成ssh keygen

ssh-keygen

生成的ssh-key处于/root/.ssh/目录下,公钥为id_rsa.pub
将生成的Master Node公钥置于
在目标处创建文件夹

mkdir -p /home/user2/.ssh
刷新配置

使用下列命令:

sudo sysctl --system
sudo sysctl -p

安装kubernetes

配置kubernetes配置文件(注意使用aliyun 镜像,Google上不去)

创建文件

vim /etc/yum.repos.d/kubernetes.repo 

写入以下内容

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

安装kubelet, kubeadm, and kubectl

使用如下命令

sudo yum install -y kubelet kubeadm kubectl

启动kubectl

sudo yum install -y kubelet kubeadm kubectl && systemctl start kubelet

在Master Node安装Ansible

安装python3、将系统的python从2.+升级为3.+(坑1、坑2)

使用命令

 sudo yum install git python3 python3-pip -y

安装python 3以及git

创建符号链接

sudo ln -sf /usr/bin/python3 /usr/bin/python

检查python版本更改成功

python --version

排坑2

添加EPEL存储库:
sudo yum install epel-release
安装 ansible
sudo yum -y install ansible
安装python-netaddr
sudo yum -y install python-netaddr

安装并配置kubespray

下载github kubespray项目:
wget https://github.com/kubernetes-sigs/kubespray/archive/v2.18.0.tar.gz
解压缩并切换目录
tar -xzvf v2.18.0.tar.gz & cd kubespray-2.18.0
安装requirement.txt内依赖库
sudo pip3 install -r requirements.txt
inventory/sample 复制到inventory/mycluster
cp -rfp inventory/sample inventory/mycluster
使用 inventory builder更新 Ansible inventory file
declare -a IPS=(172.19.35.98 172.19.35.99 172.19.35.100)
CONFIG_FILE=inventory/mycluster/hosts.yaml /usr/bin/python3.6 contrib/inventory_builder/inventory.py ${IPS[@]}

配置启动

使用以下命令

ansible-playbook -i inventory/mycluster/hosts.yaml  --become --become-user=root cluster.yml

FAQs/经常出现的问题

1. yum 无法获取url

未配置域名解析
需要

vi /etc/resolv.conf
nameserver 223.5.5.5
search localdomain

2. 升级后yum 无法正常运行

在升级python版本后,yum依赖的python默认版本变为了python3
。当出现文件报错后需要将报错文件(/usr/bin/yum/usr/libexec/urlgrabber-ext-down)的:

#!/usr/bin/python

改为

#!/usr/bin/python2.x

其中的x是原先系统中存在的python版本

3. 使用Git Clone git 命令返回443错误

由于github连接不稳定的问题,git clone 经常会连接失败。这里应改用wget下载然后再解压(gunzip -C)。

4. Kubernets、Github文件下载过慢、经常下载失败、因为某些原因无法下载

4.1 配置私有仓库并从私有仓库拉取

参考url: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/pull-image-private-registry/

4.2 配置镜像仓库

docker镜像仓库的配置方式参考:https://yeasy.gitbook.io/docker_practice/install/mirror

但是kubernetes1.20后使用containerd作为镜像管理,这点请关注FAQ7

5. 通过 ansible playbook 配置 kubernetes 上次配置失败、需要清除以往配置重新配置

使用下列命令清除cluster节点中kubernetes的安装

kubeadm reset -f
sudo kubeadm reset -f
sudo rm -rf /etc/cni/net.d/
modprobe -r ipip
yum -y remove kubelet kubeadm kubectl
sudo rm -rvf $HOME/.kube
sudo rm -rvf ~/.kube/
sudo rm -rvf /etc/kubernetes/
sudo rm -rvf /etc/systemd/system/kubelet.service.d
sudo rm -rvf /etc/systemd/system/kubelet.service
sudo rm -rvf /usr/bin/kube*
sudo rm -rvf /etc/cni
sudo rm -rvf /opt/cni
sudo rm -rvf /var/lib/etcd
sudo rm -rvf /var/etcd

使用下列命令重置iptables以及其他配置:

sudo yum remove -y epel-release
sudo yum remove -y ipvsadm ipset iptables
sudo yum -y autoremove

使用下列命令清除anisible playbook安装配置

ansible-playbook -i inventory/mycluster/inventory.ini reset.yml --extra-vars "reset_confirmation=yes"

6. 配置后使用命令提示hosts不存在

将主节点中的/etc/kubernetes/admin.conf复制到其他节点中

7. Kubectl 无法拉取镜像(与crictl fall、Containerd 相同问题)

问题出现测试

使用下列命令

	crictl pull <image_name>

出现错误:

FATA[0000] pulling image: rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/nginx:latest": failed to resolve reference "docker.io/library/nginx:latest": failed to do request: Head "https://registry-1.docker.io/v2/library/nginx/manifests/latest": proxyconnect tcp: EOF
排查方向一:正确配置容器镜像

使用下列命令查看containerd的下载路径配置:

 vim /etc/containerd/config.toml

配置文件如下

...前略
[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    sandbox_image = "k8s.m.daocloud.io/pause:3.3"
    max_container_log_line_size = -1
    [plugins."io.containerd.grpc.v1.cri".containerd]
      default_runtime_name = "runc"
      snapshotter = "overlayfs"
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
          runtime_type = "io.containerd.runc.v2"
          runtime_engine = ""
          runtime_root = ""
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            systemdCgroup = true
    [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["https://*******.mirror.aliyuncs.com"]

其中的 [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] 下的endPoint一项要根据申请的阿里云镜像加速(https://help.aliyun.com/document_detail/60750.html)url进行替换。
完成配置后、刷新配置

systemctl daemon-reload
systemctl restart containerd
排查方向二:关闭错误代理

使用下列命令查看代理配置:

vim /etc/systemd/system/containerd.service.d/http-proxy.conf

配置文件如下:

Environment="HTTP_PROXY=http://<proxy_ip>:<proxy_port>/
HTTPS_PROXY=http://<proxy_ip>:<proxy_port>/
NO_PROXY=..."

将其中的HTTP_PROXY以及HTTPS_PROXY以及其等于号的内容统统删除。
完成配置后、刷新配置

systemctl daemon-reload
systemctl restart containerd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值