首页 > 其他分享 >Kubernetes前提条件准备

Kubernetes前提条件准备

时间:2024-08-25 15:48:54浏览次数:5  
标签:x86 Kubernetes ce el8 64 准备 docker net 前提条件

环境条件


  1. 升级内核
  2. 修改内核参数
  3. 配置cgroup
  4. 安装CRI

内核参数


  1. 配置网络流量转发
    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
 
  1. 启用模块
    modprobe overlay
    modprobe br_netfilter
 
  1. 调整内核参数net.ipv4.ip_forward
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables  = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward                 = 1
    EOF
 
  1. 启用内核参数without reboot
    [23:07:40] root@kubernetes-template-os:~ # sysctl --system
    * Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
    kernel.yama.ptrace_scope = 0
    * Applying /usr/lib/sysctl.d/50-coredump.conf ...
    kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e
    kernel.core_pipe_limit = 16
    * Applying /usr/lib/sysctl.d/50-default.conf ...
    kernel.sysrq = 16
    kernel.core_uses_pid = 1
    kernel.kptr_restrict = 1
    net.ipv4.conf.all.rp_filter = 1
    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.conf.all.promote_secondaries = 1
    net.core.default_qdisc = fq_codel
    fs.protected_hardlinks = 1
    fs.protected_symlinks = 1
    * Applying /usr/lib/sysctl.d/50-libkcapi-optmem_max.conf ...
    net.core.optmem_max = 81920
    * Applying /usr/lib/sysctl.d/50-pid-max.conf ...
    kernel.pid_max = 4194304
    * Applying /etc/sysctl.d/60-gce-network-security.conf ...
    net.ipv4.tcp_syncookies = 1
    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.conf.all.secure_redirects = 1
    net.ipv4.conf.default.secure_redirects = 1
    net.ipv4.ip_forward = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.all.rp_filter = 1
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    net.ipv4.icmp_ignore_bogus_error_responses = 1
    net.ipv4.conf.all.log_martians = 1
    net.ipv4.conf.default.log_martians = 1
    kernel.randomize_va_space = 2
    kernel.panic = 10
    * Applying /etc/sysctl.d/99-sysctl.conf ...
    * Applying /etc/sysctl.d/k8s.conf ...
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward = 1
    * Applying /etc/sysctl.conf ...
  2. 结果验证
    [23:09:10] root@kubernetes-template-os:~ # sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward = 1
    
    ## 验证 br_netfilter, overlay
    [23:09:14] root@kubernetes-template-os:~ # lsmod | grep br_netfilter
    br_netfilter           32768  0
    bridge                393216  1 br_netfilter
    [23:10:06] root@kubernetes-template-os:~ # lsmod | grep overlay
    overlay               188416  0
   

配置cgroup驱动


在Linux中CGroup的功能是用于限制分配给进程的资源,Kubernetes中的Kubelet与CRI都需要对cgroup控制组强势执行Pod的资源控制

注意:kubelet与CRI必须使用同一个cgroup,避免资源压力大造成的不稳定

Kubernetes支持二种cgroup

  1. cgroupfs
    • cgroupfs是kubelet默认使用的cgroup驱动,但是当使用systemd初始化系统时,不建议使用cgroupfs
  1. systemd
    • systemd 与 cgroup 集成紧密,并将为每个 systemd 单元分配一个 cgroup。 因此,如果你 systemd 用作初始化系统,同时使用 cgroupfs 驱动,则系统中会存在两个不同的 cgroup 管理器
    • 修改kubelet的cgroup驱动,编辑KubeletConfiguration 的 cgroupDriver 选项,并将其设置为 systemd。例如:
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      ...
      cgroupDriver: systemd

CRI安装


CRI版本说明

Kubernetes 从 1.26 版本开始仅适用于 v1 版本的容器运行时(CRI)API。早期版本默认为 v1 版本, 但是如果容器运行时不支持 v1 版本的 API, 则 kubelet 会回退到使用(已弃用的)v1alpha2 版本的 API。

CRI支持选择

  1. containerd
  2. CRI-O
  3. Docker Engine
  4. Mirantis Container Runtime

Containerd配置

选择使用containerd作为CRI,官方文档提供了三种安装方式

  1. 官方二进制,https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-1-from-the-official-binaries,共需要安装三个组件
  2. 使用apt-get 或者 dnf(docker官方YUM源)
    • Docker官方YUM源的Containerd集成了runcf,但是不包含cni-plugins
  3. 源码安装

YUM安装

  1. 配置YUM仓库
    [01:29:01] root@kubernetes-template-os:~ # dnf install -y yum-utils
    Last metadata expiration check: 1:32:41 ago on Sun 15 Oct 2023 11:56:31 PM CST.
    Dependencies resolved.
    ============================================================================================================================================================================================================
     Package                                          Architecture                                  Version                                                 Repository                                     Size
    ============================================================================================================================================================================================================
    Installing:
     yum-utils                                        noarch                                        4.0.21-23.el8                                           baseos                                         80 k
    
    Transaction Summary
    ============================================================================================================================================================================================================
    Install  1 Package
    
    Total download size: 80 k
    Installed size: 23 k
    Downloading Packages:
    yum-utils-4.0.21-23.el8.noarch.rpm                                                                                                                                          760 kB/s |  80 kB     00:00
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Total                                                                                                                                                                       107 kB/s |  80 kB     00:00
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transaction
      Preparing        :                                                                                                                                                                                    1/1
      Installing       : yum-utils-4.0.21-23.el8.noarch                                                                                                                                                     1/1
      Running scriptlet: yum-utils-4.0.21-23.el8.noarch                                                                                                                                                     1/1
      Verifying        : yum-utils-4.0.21-23.el8.noarch                                                                                                                                                     1/1
    
    Installed:
      yum-utils-4.0.21-23.el8.noarch
    
    Complete!
    
    
    
    [01:33:07] root@kubernetes-template-os:~ # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
   
  1. 安装最新版本Docker engine
    [01:33:16] root@kubernetes-template-os:~ # dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    Docker CE Stable - x86_64                                                                                                                                                   509 kB/s |  50 kB     00:00
    Last metadata expiration check: 0:00:01 ago on Mon 16 Oct 2023 01:38:21 AM CST.
    Dependencies resolved.
    ============================================================================================================================================================================================================
     Package                                                 Architecture                      Version                                                        Repository                                   Size
    ============================================================================================================================================================================================================
    Installing:
     containerd.io                                           x86_64                            1.6.24-3.1.el8                                                 docker-ce-stable                             34 M
     docker-buildx-plugin                                    x86_64                            0.11.2-1.el8                                                   docker-ce-stable                             13 M
     docker-ce                                               x86_64                            3:24.0.6-1.el8                                                 docker-ce-stable                             24 M
     docker-ce-cli                                           x86_64                            1:24.0.6-1.el8                                                 docker-ce-stable                            7.2 M
     docker-compose-plugin                                   x86_64                            2.21.0-1.el8                                                   docker-ce-stable                             13 M
    Installing dependencies:
     checkpolicy                                             x86_64                            2.9-1.el8                                                      baseos                                      348 k
     container-selinux                                       noarch                            2:2.221.0-1.module_el8+653+feef7bfe                            appstream                                    69 k
     docker-ce-rootless-extras                               x86_64                            24.0.6-1.el8                                                   docker-ce-stable                            4.9 M
     fuse-common                                             x86_64                            3.3.0-17.el8                                                   baseos                                       22 k
     fuse-overlayfs                                          x86_64                            1.12-1.module_el8+454+d7ef4b8d                                 appstream                                    70 k
     fuse3                                                   x86_64                            3.3.0-17.el8                                                   baseos                                       54 k
     fuse3-libs                                              x86_64                            3.3.0-17.el8                                                   baseos                                       95 k
     libcgroup                                               x86_64                            0.41-19.el8                                                    baseos                                       70 k
     libslirp                                                x86_64                            4.4.0-1.module_el8+487+8e42a277                                appstream                                    70 k
     policycoreutils-python-utils                            noarch                            2.9-24.el8                                                     baseos                                      260 k
     python3-audit                                           x86_64                            3.0.7-5.el8                                                    baseos                                       87 k
     python3-libsemanage                                     x86_64                            2.9-9.el8                                                      baseos                                      128 k
     python3-policycoreutils                                 noarch                            2.9-24.el8                                                     baseos                                      2.3 M
     python3-setools                                         x86_64                            4.3.0-5.el8                                                    baseos                                      627 k
     slirp4netns                                             x86_64                            1.2.1-1.module_el8+661+d1afb926                                appstream                                    56 k
    Enabling module streams:
     container-tools                                                                           rhel8
    
    Transaction Summary
    ============================================================================================================================================================================================================
    Install  20 Packages
   
  1. 也可以安装指定版本
    [01:41:23] root@kubernetes-template-os:~ # dnf list docker-ce --showduplicates | sort -r
    Last metadata expiration check: 0:03:11 ago on Mon 16 Oct 2023 01:38:21 AM CST.
    Installed Packages
    docker-ce.x86_64               3:24.0.6-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:24.0.6-1.el8                  @docker-ce-stable
    docker-ce.x86_64               3:24.0.5-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:24.0.4-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:24.0.3-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:24.0.2-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:24.0.1-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:24.0.0-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:23.0.6-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:23.0.5-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:23.0.4-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:23.0.3-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:23.0.2-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:23.0.1-1.el8                  docker-ce-stable
    docker-ce.x86_64               3:23.0.0-1.el8                  docker-ce-stable
    
    
    dnf install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin

Containerd配置文件

  1. 生成默认配置城文件
    [03:04:54] root@kubernetes-template-os:~ # containerd config default > /etc/containerd/config.toml
    
  1. 配置systemd cgroup
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
      ...
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
        SystemdCgroup = true

安装Kubernetes软件包

https://v1-27.docs.kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl

  1. 配置YUM源
    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    exclude=kubelet kubeadm kubectl
    EOF
    
    ## 查看YUM源
    [03:11:26] root@kubernetes-template-os:~ # cat /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    exclude=kubelet kubeadm kubectl
    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    exclude=kubelet kubeadm kubectl
    EOF
    
    ## 查看YUM源
    [03:11:26] root@kubernetes-template-os:~ # cat /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    exclude=kubelet kubeadm kubectl
  1. 关闭selinux
    • 方法一,setenforce 0
    • 方法二,sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config
  2. 安装kubelet、kubectl、kubeadm
    dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
    
    systemctl enable --now kubelet
  1. Kubernetes shell自动补全
    echo 'source <(kubectl completion bash)' >>~/.bashrc
    echo 'source <(kubeadm completion bash)' >>~/.bashrc
    
    source ~/.bashrc

     

标签:x86,Kubernetes,ce,el8,64,准备,docker,net,前提条件
From: https://www.cnblogs.com/apink/p/18379020

相关文章

  • Kubernetes大规模集群
    Kubernetes资源限制Kubernetes单个集群支持的最大节点数为5,000。Kubernetes标准的配置:每个节点的Pod数量不超过110节点数不超过5,000Pod总数不超过150,000容器总数不超过300,000你可以通过添加或删除节点来扩展集群。集群扩缩的方式取决于集群的部署方式以下集......
  • Kubernetes 从0到1
    Kubernetes建设考虑点部署一套Kubernetes集群需要考虑多个方面,包括应用层面、中间件、数据库、流量入口等。以下是一些关键方面:基础设施:选择适当的云提供商或物理硬件来部署Kubernetes集群。确保网络和存储资源的可用性和性能。考虑集群的地理位置和可用性区域。以上综合......
  • Kubernetes v1.28.2 & Calico eBPF
    集群初始化简略步骤初始化集群kubeadminit\--skip-phases=addon/kube-proxy\--apiserver-cert-extra-sans=35.229.220.159,127.0.0.1,10.0.0.3,10.0.0.4,10.0.0.5,10.254.0.2\--control-plane-endpoint=apiserver.unlimit.club\--apiserver-advertis......
  • Kubernetes自动扩缩容:实现高效资源管理
    在云计算和容器化时代,应用程序的弹性伸缩变得尤为重要。Kubernetes作为领先的容器编排平台,提供了强大的自动扩缩容(Autoscaling)功能,允许集群根据实时负载自动调整Pod的数量。本文将深入探讨Kubernetes中的自动扩缩容机制,包括其原理、实现方式以及最佳实践。Kubernetes自动扩......
  • 深入理解Kubernetes中的ConfigMap:配置管理的艺术
    在Kubernetes的世界中,配置管理是一个至关重要的部分,它允许开发者和运维人员将配置信息从容器镜像中分离出来,以便于更灵活地管理和更新应用。ConfigMap是Kubernetes提供的一种配置管理工具,它允许用户将配置数据存储在集群中,并且可以被Pods以多种方式使用。本文将详细介绍Conf......
  • 2024数学建模国赛准备中!!!(2——非线性规划)
    第三章 非线性规划§1非线性规划非线性规划的实例与定义如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不象线性规划有单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一......
  • kubernetes学习笔记
    基础环境系统镜像版本Centos7.6最小化最低运行环境基本要求内存及CPU:512MB/CPU1核K3s版本v1.30.0+k3s1集群规划:注意:需要对每台主机设置hostname,使用hostnamectlset-hostname主机名K8s-master192.168.200.1291C/1GK8s-worker1192.168.200.1302C/......
  • 【Kubernetes】Kubernetes 安装后.kube/config文件作用以及位置
    1.概述首先参考上一篇文章:【Flink】Mac下使用flink-kubernetes-operator本地运行flink程序在上一篇文章中我本地运行起来一个k8s案例,然后在我做使用代码提交任务到k8s的时候报错找不到/root/.kube/config然后我就突然我本地是不是不是这个目录呢?一找果然找到了lcc@lcc......
  • 【kubernetes】The LocalStreamEnvironment cannot be used when submitting
    1.概述新手上路,首先参考文章:【Flink】Mac下使用flink-kubernetes-operator本地运行flink程序在这个文章中,我们知道了如何使用demo提交flink任务。但是如果我们的机器没有kubectl命令,我们改怎么提交任务到flink呢?这里我们可以使用代码提交,此处文章参考:【kubernetes】使......
  • D10 kubernetes 容器监控检查之探针
    0、简介》 当pod状态显示为running,这表明pod中所有容器都已经运行,但这并不意味着pod中的应用程序已经准备好提供服务。实际上,running状态仅仅表示容器的启动状态,与应用程序是否准备好提供服务没有直接关系。可能由于以下原因,应用程序不能提供服务:-应用程序启动慢:容器已运行,但容......