如何使用Kubeadm设置Kubernetes集群。完整的指南!

Kubernetes是一个开源平台,用于自动化部署、扩展和管理容器化应用程序。它是一种流行的容器编排工具,提供了一种将大量容器作为一个单元进行管理的方法,而不是单独管理每个容器。什么是Kubeadm?

Kubernetes是一个开源平台,用于自动化部署、扩展和管理容器化应用程序。它是一种流行的容器编排工具,提供了一种将大量容器作为一个单元进行管理的方法,而不是单独管理每个容器。

什么是Kubeadm?

如果你需要,Kubeadm工具是不错的。

  1. 一个简单的方法让你尝试Kubernetes,可能是第一次。
  2. 现有用户自动设置集群并测试其应用程序的方法。
  3. 其他生态系统和/或安装工具中的一个构建块,具有更大的范围。

你可以在各种机器上安装和使用kubeadm:你的笔记本电脑、一组云服务器、Raspberry Pi等等。无论你是在云端还是在企业内部部署,你都可以将kubeadm整合到Ansible或Terraform等配置系统中。

以下是Kubernetes集群设置的前提条件

  1. 至少两个Ubuntu节点[一个主节点和一个工作节点]。你可以根据你的要求拥有更多的工作节点,例如。Ubuntu或CentOS。
  2. 控制节点,建议至少有2vCPU和4GB内存
  3. 工作节点,建议至少有1vCPU和2GB内存。
  4. 10.X.X.X/X网络范围,主节点和工作节点的静态IP。我们将使用192.x.x.x系列作为Flannel网络插件将使用的pod网络范围。

让我们现在开始设置。

注意:除非另有规定,否则以根用户身份执行所有命令。

在启动Kubernetes之前,我们应该禁用所有节点上的防火墙和交换。

禁用防火墙。

使用以下命令禁用防火墙。

ufw disable

禁用所有节点上的交换。

swapoff -a; sed -i \'/swap/d\' /etc/fstab

Kubernetes集群的基本要求是一个容器运行时。你可以拥有以下容器运行时中的任何一个。

  1. CRI-O
  2. 容器d
  3. Docker引擎(使用cri-dockerd)。

我们将使用CRI-O而不是Docker进行设置,因为Kubernetes已经废弃了Docker引擎。

作为第一步,我们需要在所有节点上安装cri-o。在所有节点上执行以下命令。

创建.conf文件,在启动时加载模块。

cat <<EOF | sudo tee /etc/modules-load.d/crio.confoverlaybr_netfilterEOF
# Set up required sysctl params, these persist across reboots.cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.confnet.bridge.bridge-nf-call-iptables  = 1net.ipv4.ip_forward                 = 1net.bridge.bridge-nf-call-ip6tables = 1EOF

执行下面的命令来启用overlayFS和VxLan pod的通信。

sudo modprobe overlaysudo modprobe br_netfilter

设置所需的sysctl参数,这些参数在重启后会持续存在。

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.confnet.bridge.bridge-nf-call-iptables  = 1net.ipv4.ip_forward                 = 1net.bridge.bridge-nf-call-ip6tables = 1EOF

重新加载参数。

sudo sysctl --system

启用1.23版的cri-o资源库

OS=\"xUbuntu_20.04\"
VERSION=\"1.23\"cat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.listdeb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /EOFcat <<EOF | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.listdeb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /EOF

添加gpg密钥。

curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/libcontainers.gpg add -

更新并安装crio和crio-tools。

sudo apt-get updatesudo apt-get install cri-o cri-o-runc cri-tools -y

重新加载systemd配置并启用cri-o。

sudo systemctl daemon-reloadsudo systemctl enable crio --now

Kubernetes设置。

添加公寓库

{    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -      sudo apt-get install -y apt-transport-https ca-certificates curl            sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg        echo \"deb https://apt.kubernetes.io/ kubernetes-xenial main\" > /etc/apt/sources.list.d/kubernetes.list    or    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    sudo apt-get update  }

安装Kubernetes组件。

sudo apt-get install -y kubelet kubeadm kubectl

如果你是使用LXC容器的Kubernetes节点。

在LXC容器中配置K8s v1.15+需要破解。

{    mknod /dev/kmsg c 1 11    echo \'#!/bin/sh -e\' >> /etc/rc.local    echo \'mknod /dev/kmsg c 1 11\' >> /etc/rc.local    chmod +x /etc/rc.local}

关于kmaster

初始化Kubernetes群集

用kmaster的ip地址更新下面的命令

kubeadm init --apiserver-advertise-address= 192.168.159.131 --pod-network-cidr=192.168.159.0/24  --ignore-preflight-errors=allkubeadm init --apiserver-advertise-address=192.168.0.111 --pod-network-cidr=192.168.0.0/24 --ignore-preflight-errors=all

下面是网络部分,你可以使用Calico网络或Flannel网络。

注意:不要同时配置网络

部署Calico网络

kubectl --kubeconfig=/etc/kubernetes/admin.conf create -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

部署Flannel网络

kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=allkubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

集群加入命令

kubeadm token create --print-join-command

为了能够以非root用户身份运行kubectl命令

如果你希望能够以非root用户身份运行kubectl命令,那么作为非root用户执行以下操作

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

加入集群

使用上一步中来自主服务器的Kubeadm token create命令的输出,并在此运行。

验证集群

$ kubectl get nodesNAME        STATUS   ROLES    AGE     VERSIONkmaster     Ready    master   8m53s   v1.19.2kworker1   Ready       5m35s   v1.19.2kworker2   Ready       3m39s   v1.19.2

本文来自于头条号作者:吉祥庄钢铁侠,本站旨在传播优质文章,无商业用途。

本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
投稿

Kubernetes中Pod之间的基本网络和通信

2023-2-19 17:43:55

投稿

如何在Nginx中获得客户的IP地址

2023-2-19 17:43:58

搜索