kubernetes系列文章一:kubernetes1.24部署

系列文章目录

第一章 kubernetes1.24部署
第二章 选择docker作为容器运行时
第三章 选择containerd作为容器运行时
第四章 选择cri-o作为容器运行时
第五章 网络插件flannel部署
第六章 网络插件calico部署
第七章 网络插件cilium部署



kubernetes的安装和部署

1.kubernetes环境要求

1.1 环境要求

  1. 一台兼容的Linux主机。kubernetes项目为基于Debian和RedHat的Linux发行版以及一些不提供包管理器的发行版提供统一的指令。

  2. 每台机器2GB或更多的RAM(如果内存小于2GB将会影响应用的运行内存)。

  3. 2核CPU(或者更多)。

  4. 集群中的所有机器的网络彼此能相互连接(公网和内网都可以)。

  5. 节点之中不能有重复的主机名、MAC地址或product_uuid。

    //获取主机名
    # hostname
    //获取网络接口的MAC地址命令来检验是否重复
    # ip link
    //或
    # ifconfig -a
    //校验product_uuid 命令
    # sudo cat /sys/class/dmi/id/product_uuid
    

    一般来讲,硬件设备会拥有唯一的MAC地址,但是有些虚拟机的MAC地址可能会重复。 Kubernetes 使用这些值来确定集群中的节点是否唯一。

    如果这些值在每个节点上不唯一,可能会导致安装失败

  6. 确认机器上某些端口未占用。端口详情请点击此处查看

    //确认命令
    # netstat -anp
    
  7. 禁用交换分区。为了保证kubelet正常工作,必须要禁用交换分区。(确认方法和禁用方法后面有说明)

1.2 参考

以下是我安装kuberneets集群时的 环境参考(一个master节点和两个worker节点)。

节点名IP系统以及版本
master2192.168.10.92Ubuntu 20.04
worker21192.168.10.12Ubuntu 20.04
worker22192.168.10.202Ubuntu 20.04
//查看节点名
# uname -a
//查看系统版本
# cat /proc/version

2.安装kubernetes前环境的准备(所有节点)

2.1配置/etc/hosts文件

在/etc/hosts文件的后面加上所有机器的IP和主机名(原文件内容不用更改,在文件内容的末尾加上即可)

# vi /etc/hosts
192.168.10.92 master2
192.168.10.12 worker21
192.168.10.202 worker22

注意:IP和主机名根据环境修改

2.2允许iptables检查桥接流量

确保 br_netfilter 模块被加载,这一操作可以通过运行 lsmod | grep br_netfilter 来完成。若要显式加载该模块,可执行 sudo modprobe br_netfilter。

命令:

//查看模块是否生效:
# lsmod | grep br_netfilter 
//增加模块:
# sudo modprobe br_netfilter

在这里插入图片描述

2.3 配置网桥过滤,内核转发

配置如下:

# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
//生效:
# sysctl -p /etc/sysctl.d/k8s.conf

2.4关闭防火墙和禁用交换分区

关闭防火墙:

# sudo ufw disable

查看防火墙状态:Inactive为关闭

# sudo ufw status
Status: inactive

禁用交换分区:

# swapoff -a
//启用交换分区命令
# swapon -a

查看分区状态:

# free -h
//Swap后面的值为0,则为禁用状态
              total        used        free      shared  buff/cache   available
Mem:          3.8Gi       792Mi       180Mi       2.0Mi       2.9Gi       2.8Gi
Swap:            0B          0B          0B

3.安装kubernetes(kubectl、kubelet、kubeadm)

  1. 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:
# sudo apt-get update
# sudo apt-get install -y apt-transport-https ca-certificates curl
  1. 下载Google Cloud 公开签名秘钥
# sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
  1. 添加 Kubernetes apt 仓库:
# echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
  1. 更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:kubernetes版本偏差策略请访问网站:版本偏差策略 | Kubernetes
# sudo apt-get update
//不指定版本则为安装最新版本
# sudo apt-get install -y kubelet kubeadm kubectl
# sudo apt-mark hold kubelet kubeadm kubectl
  1. apt-mark hold 设置不自动更新
  2. 指定版本例如:
sudo apt-get install -y kubelet=1.24.0 kubeadm=1.24.0 kubectl=1.24.0

4.选择运行时来部署kubernetes集群

在这里我们提供了几种运行时的安装和根据我环境的一些配置:

  1. 使用docker作为kubernetes的容器运行时。

  2. 使用containerd作为kubernetes的容器运行时。

  3. 使用cri-o作为kubernetes的容器运行时。

安装好运行时后,需要配置一下kubernetes运行时crictl工具。

使用cri-o作为容器运行时的时候,会自动配置crictl.yaml文件,请跳过下方配置。

# vim /etc/crictl.yaml
//写入如下内容
runtime-endpoint: unix:///var/run/containerd/containerd.sock //uxix端口的信息根据运行时修改
image-endpoint: unix:///var/run/containerd/containerd.sock  //uxix端口的信息根据运行时修改
 timeout: 10
 debug: false
pull-image-on-create: false

5.下载并且配置好运行时后,接下来开始初始化kuernetes集群

5.1预先拉取镜像(可选)

在初始化kubernetes集群之前,我们可以选择性的预先拉取初始化集群所需要的镜像,避免在初始化kubernetes集群时因为网络问题拉取镜像失败。

在拉取镜像之前我们可以使用命令查看部署kubernetes集群所需要的镜像列表:

# kubeadm config images list 

镜像列表默认显示镜像为最新的版本,如果要查看指定版本,只需要加上参数即可,例如我们要查看kubernetes的1.24.0版本:

# kubeadm config images list --kubernetes-version=v1.24.0
k8s.gcr.io/kube-apiserver:v1.24.0
k8s.gcr.io/kube-controller-manager:v1.24.0
k8s.gcr.io/kube-scheduler:v1.24.0
k8s.gcr.io/kube-proxy:v1.24.0
k8s.gcr.io/pause:3.7
k8s.gcr.io/etcd:3.5.3-0
k8s.gcr.io/coredns/coredns:v1.8.6

确认好镜像及其版本无误后,我们可以使用命令拉取镜像:

# kubeadm config images pull

当然,在这里也可以用kubernetes-version参数指定拉取镜像的版本:

# kubeadm config images pull --kubernetes-version=v1.24.0

5.2 初始化kubrnetes集群(只在master上操作)

初始化kubernetes集群所需要的镜像拉取完毕后,可以使用kubeadm工具来初始化kubernetes集群。

在初始化集群的过程中,kubeadm会自动检测本地的镜像,如果有,则会跳过拉取镜像的过程。

初始化集群的命令:

# kubeadm init 

我们可以在kubeadm init命令后加一些参数,来达到我们的目的。

//指定kubernetes的版本,例如:
# kubeadm init --kubernetes-version=v1.24.0

//指定pod网络可以使用的IP地址段,例如:
# kubeadm init --pod-network-cidr=10.244.0.0/16

//通过配置文件来初始化集群,例如:
# kubeadm init --config kubeadm.yml

//当不止一个运行时的情况下,使用此参数选择运行时,例如:
# kubeadm init --cri-socket unix:///var/run/cri-dockerd.sock

更多参数可以用kubeadm init --help查看

成功示例片段如下:

.......
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/
  
  You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join 192.168.10.86:6443 --token or66qf.b5mpkyxput8vem51 \
	--discovery-token-ca-cert-hash sha256:cef7b46b409ba83e94c2eea7fed648ae0d8f19f71e5af1ff1cb85d14e1bee281 \
	--control-plane 

成功后需要根据打印出的信息来投几条命令:

# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
# export KUBECONFIG=/etc/kubernetes/admin.conf

5.3worker节点加入集群(只在worker上操作)

初始化集群成功后,控制台会打印出集群的token令牌,我们在worker上投此命令,让worker节点加入集群:

//例如
# kubeadm join 192.168.10.92:6443 --token dxwj7q.3qnta31tg7xq9s2t --discovery-token-ca-cert-hash sha256:f8e82fb53bcaa428b2abe1c8eac28960bf2186b9ba4b47871921056fedc22ea7

此令牌具有时效性(可设置),默认为24小时,如果令牌失效或找不到了,可以使用如下命令重新获取:

# kubeadm token create --print-join-command

如果不只有一个运行时,那么需要在后面加上--cri-socket string参数。

kubeadm token的其他参数(包括设置时效的参数)请查看这里。

6.安装网络插件(只在master操作)

下面提供了三种网络插件的安装部署方法,可选择一种来作为集群的网络插件。更多详细信息请点击链接。

  1. 选择flannel作为集群的网络插件
  2. 选择calico作为集群的网络插件
  3. 选择cilium作为集群的网络插件

6.1 选择flannel作为集群的网络插件

下载部署flannel网络插件:

# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
//部署
# kubectl apply -f kube-flannel.yml

6.2 选择calico作为集群的网络插件

下载部署calico网络插件:

//下载
# curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
//部署
# kubectl apply -f calico.yaml

6.3 选择cilium作为集群的网络插件

下载部署cilium网络插件:
先下载cilium CTL,通过cilium CTL来安装cilium

  1. cilium CTL部署:
# CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/master/stable.txt)
  1. 设置CLI_ARCH变量
# CLI_ARCH=amd64
# if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
  1. 下载文件
# curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
  1. 校验文件的完整性
# sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
  1. 解压且删除解压文件
# sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
# rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
  1. 安装cilium:
# cilium install

7.验证集群(master上操作)

最后可以使用命令来验证和检查集群。

# kubectl get nodes
# kubectl get pods -A
# kubectl get svc -A

在这里插入图片描述


编辑时间:2022-8-19

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的信息,出现"ImportError: Numba needs NumPy 1.24 or less"的错误是因为Numba需要使用1.24版本或更低版本的NumPy。根据引用\[1\]中的建议,可以尝试重新安装低版本的NumPy来解决这个问题。然而,根据引用\[1\]中的报错信息,尝试安装1.22版本的NumPy时出现了错误。这可能是因为没有找到与指定版本匹配的NumPy发行版。 另一种解决方法是尝试重新安装Numba,如引用\[3\]所提到的。根据引用\[3\]中的描述,重新安装Numba可能会解决这个问题。你可以尝试在命令行中使用pip命令重新安装Numba,例如"pip install numba"。如果已经安装了旧版本的Numba,可以尝试卸载它并重新安装最新版本。 总之,解决"ImportError: Numba needs NumPy 1.24 or less"的错误的方法包括重新安装低版本的NumPy或重新安装Numba。你可以尝试这些方法来解决问题,并确保你的NumPy版本符合Numba的要求。 #### 引用[.reference_title] - *1* *3* [问题解决:ImportError:Numba needs NumPy 1.22 or less](https://blog.csdn.net/weixin_41499142/article/details/126425915)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [解决numba报错:Numba needs NumPy 1.20 or less](https://blog.csdn.net/weixin_50007456/article/details/122779539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值