部署单节点k8s并允许master节点调度pod

安装k8s
需要注意的是k8s1.24+ 已经弃用dockershim,现在使用docker需要cri-docker插件作为垫片,对接k8s的CRI。

硬件环境: 2c2g
主机环境: CentOS Linux release 7.9.2009 (Core)
IP地址: 192.168.44.161

一、 主机配置

  1. 设置主机名

    hostnamectl set-hostname  k8s-master
    
  2. 关闭selinux,防火墙

    systemctl disable firewalld --now
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    
  3. 关闭swap分区

    swapoff -a
     注释掉/etc/fstab的信息
    

二、 安装容器运行时

  1. 安装docker engine
    1.1. 安装和配置先决条件
    转发 IPv4 并让 iptables 看到桥接流量
    执行下述指令

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    sudo modprobe overlay
    sudo modprobe br_netfilter
    # 设置所需的 sysctl 参数,参数在重新启动后保持不变
    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
    # 应用 sysctl 参数而不重新启动
    sudo sysctl --system
    # 通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:
    lsmod | grep br_netfilter
    lsmod | grep overlay
    # 通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:
    sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
    

    1.2. 安装docker engine

    curl -fsSL https://get.docker.com -o get-docker.sh
    sh get-docker.sh
    

    1.3. 启动自启

    systemctl enable docker --now
    

    1.4. 修改cgroup

    由于kubelet 和 容器运行时必须使用一致的cgroup驱动,kubelet 使用的是systemd 所以需要将docke
    engine的cgroup修改为 system

    cat > /etc/docker/daemon.json << EOF
    {
    "exec-opts": ["native.cgroupdriver=systemd"]
    }
    EOF
    
    systemctl daemon-reload 
    systemctl restart docker
    

三、 安装 docker engine 对接 cri 的垫片 cri-docker

  1. 安装cri-docker

    wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.11/cri-dockerd-0.3.11-3.el7.x86_64.rpm
    rpm -ivh cri-dockerd-0.3.11-3.el7.x86_64.rpm
     systemctl enable cri-docker --now
    

    cri-docker 默认的socket文件在 /run/cri-dockerd.sock 后面会用到

  2. 配置cri-docker

    只需要配置 ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint
    fd:// --network-plugin=cni
    –pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9即可

  • –network-plugin:指定网络插件规范的类型,这里要使用CNI

  • –pod-infra-container-image:Pod中的puase容器要使用的Image,默认为registry.k8s.io上的pause仓库中的镜像,由于安装k8s使用阿里云的镜像仓库,所以提前指定 puase 镜像

      vi /usr/lib/systemd/system/cri-docker.service
    
    [Unit]
    Description=CRI Interface for Docker Application Container Engine
    Documentation=https://docs.mirantis.com
    After=network-online.target firewalld.service docker.service
    Wants=network-online.target
    Requires=cri-docker.socket
    
    [Service]
    Type=notify
    ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
    ExecReload=/bin/kill -s HUP $MAINPID
    TimeoutSec=0
    RestartSec=2
    Restart=always
    
    # Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
    # Both the old, and new location are accepted by systemd 229 and up, so using the old location
    # to make them work for either version of systemd.
    StartLimitBurst=3
    
    # Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
    # Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
    # this option work for either version of systemd.
    StartLimitInterval=60s
    
    # Having non-zero Limit*s causes performance problems due to accounting overhead
    # in the kernel. We recommend using cgroups to do container-local accounting.
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    
    # Comment TasksMax if your systemd version does not support it.
    # Only systemd 226 and above support this option.
    TasksMax=infinity
    Delegate=yes
    KillMode=process
    
    
  1. 重新加载cri-docker

    systemctl daemon-reload
    systemctl restart cri-docker
    

四、 部署k8s集群
1. 配置yum仓库(使用阿里云的镜像仓库)

cat >  /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
	http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum -y install kubeadm kubectl kubelet --disableexcludes=Kubernetes
  1. 启动 kubelet

    systemctl enable kubelet --now
    
  2. 使用 kubeadm 创建集群
    3.1. 修改初始集群默认配置文件

    kubeadm config print init-defaults > init-defaults.yaml
    

    vim init-defaults.yaml

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.44.161 
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///run/cri-dockerd.sock
  imagePullPolicy: IfNotPresent
  name: node
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.28.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16
scheduler: {}

  • advertiseAddress 集群宣告地址(master地址)

  • criSocket cri-docker 的socket文件的地址

  • imageRepository 拉取镜像的地址(这里使用的是阿里云)

  • podSubnet 设置pod的网络范围,后面安装网络插件必须和这个地址一致

3.2. 使用初始化配置文件,下载镜像

kubeadm config images list --config=init-defaults.yaml		# 查看需要哪些镜像
kubeadm config images pull --config=init-defaults.yaml	# 拉取镜像

3.3. 初始化集群

kubeadm init --config=init-defaults.yaml

3.4. 如果以root用户执行kub-ctl需要执行如下(根据提示执行)

export KUBECONFIG=/etc/kubernetes/admin.conf

3.5. 安装网络插件(这里使用简单的三层网络flannel)

 kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

五、 允许master节点调度pod

这是因为master配置了污点所有pod无法调度,只需要把污点删除即可(本地环境或者测试环境可以使用,生产不建议)
关于污点的官方文档介绍:
https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration/

  1. 查看节点的污点

    kubectl describe nodes node | grep Taint
    

    在这里插入图片描述
    可以看出master节点被配置了 NoSchedule污点

  2. 删除污点

    kubectl taint nodes node  node-role.kubernetes.io/control-plane:NoSchedule-
    

    在这里插入图片描述

  3. 创建pod测试

    kubectl run nginx --image=nginx
    

在这里插入图片描述
可以看出master节点现在也能调度pod了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/477405.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

垃圾回收-垃圾回收中的相关概念

目录 System.gc()的理解 内存泄漏&#xff08;Memory Leak&#xff09; 内存溢出&#xff08;OOM&#xff09; Stop The World 垃圾回收的串行、并行与并发 安全点与安全区域 强、软、弱、虚引用 强、软、弱、虚引用 终结器引用 System.gc()的理解 在默认情况下&#…

【蓝桥杯】第15届蓝桥杯青少组stema选拔赛C++中高级真题答案(20240310)

一、选择题 第 1 题 第 2 题 表达式1000/3的结果是( A )。 A.333 B.333.3 C.334 D.333.0 第 3 题 下列选项中&#xff0c;判断a等于1并且b等于1正确的表达式是( B )。 A.!((a!1)&&(b!1)) B.!((a!1)||(b!1)) C.!(a1)&&(b1) D.(a1)&&(b1) 【解析】 A…

数据机构-2(顺序表)

线性表 概念 顺序表 示例&#xff1a;创建一个存储学生信息的顺序表 表头&#xff08;Tlen总长度&#xff0c; Clen当前长度&#xff09; 函数 #include <seqlist.c> #include <stdio.h> #include <stdlib.h> #include "seqlist.h" #include &…

mysql四种事务隔离级别,2024金三银四

TransactionDefinition.PROPAGATION_MANDATORY&#xff1a;如果当前存在事务&#xff0c;则加入该事务&#xff1b;如果当前没有事务&#xff0c;则抛出异常。 TransactionDefinition.PROPAGATION_NESTED&#xff1a;如果当前存在事务&#xff0c;则创建一个事务作为当前事务的…

快来围观!我自制的 AI 周报小能手:自动收集整理周报,一键发送邮件

前言 上篇文章分享了《跟着我的步骤&#xff0c;轻松打造出 AI 智能体》&#xff0c;很多朋友都比较感兴趣&#xff0c;咨询我问 “AI 小白能学吗&#xff1f;” 我感觉问题不大&#xff0c;完全可以&#xff0c;只要把要做的事情屡明白了&#xff0c;遇到的卡点问题直接问 GPT…

oracle 19c单机版本补丁升级

文章目录 一、补丁包概述二、备份opatch三、替换高版本opatch四、打DB补丁1、关闭数据库2、关闭监听3、解压补丁4、冲突检测5、补丁空间检查6、执行补丁升级7、将更新内容加载到数据库8、最后查看数据库版本9、卸载补丁包 一、补丁包概述 补丁升级包 链接&#xff1a;https://…

GStreamer简单看看

主要是现在弄摄像头&#xff0c;要用到这东西。所以学学。 最权威主页&#xff1a;GStreamer: open source multimedia framework 大概看了下&#xff0c;好像命令也不难。 gst-launch-1.0 v4l2src device/dev/video0 ! video/x-raw,formatYUY2,width640,height480,framerat…

Java-SSM电影购票系统

Java-SSM电影购票系统 1.服务承诺&#xff1a; 包安装运行&#xff0c;如有需要欢迎联系&#xff08;VX:yuanchengruanjian&#xff09;。 2.项目所用框架: 前端:JSP、layui、bootstrap等。 后端:SSM,即Spring、SpringMvc、Mybatis等。 3.项目功能点: 3-1.后端功能: 1.用户管…

【漏洞复现】Arris 路由器 basic_sett 信息泄露漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

小车侧方位停车过程的动态模拟matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 小车侧方位停车过程的动态模拟matlab仿真。仿真得到小车的停车动画&#xff0c;小车移动的xy轴坐标以及角度变换。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a;MATLA…

Linux系统资源管理

Linux系统资源命令 在Linux中查看系统资源常用命令有哪些 在Linux中&#xff0c;系统资源是指计算机硬件、软件和网络设备等可以利用的一切物质和能量。Linux中的系统资源包括&#xff1a; CPU&#xff08;中央处理器&#xff09;&#xff1a;用于处理计算机中的指令和数据的…

opencv各个模块介绍(2)

Features2D 模块&#xff1a;特征检测和描述子计算模块&#xff0c;包括SIFT、SURF等算法。 Features2D 模块提供了许多用于特征检测和描述子匹配的函数和类&#xff0c;这些函数和类可用于图像特征的提取、匹配和跟踪。 FeatureDetector&#xff1a;特征检测器的基类&#xf…

AI应用开发-基于python的知识图谱技术

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

19 反向迭代器

反向迭代器和正向迭代器相反&#xff0c;比如一个数组内容是1,2,3,4,5。正向迭代器就是按顺序输出&#xff0c;反向迭代器是5,4,3,2,1&#xff0c;顺序倒着。想要第一个输出5&#xff0c;需要反向迭代器rbegin在5的位置,判断输出完的条件,rend在头节点的位置就行&#xff0c;只…

【go从入门到精通】select条件控制

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

【八股】ThreadLocal原理

1. Thread.java 我们首先打开Thread.java源码&#xff0c;看到里面有一个ThreadLocalMap类型的变量threadLocals 2. ThreadLocal.java -> getMap(thread t) 然后ThreadLocal.java里面有一个getMap函数&#xff0c;传入的是线程&#xff0c;返回的是线程里面的ThreadLoca…

mysql无法看到3306端口监听

参考:https://blog.csdn.net/shumeigang/article/details/103902459 mysql> show global variables like ‘port’; 是0 原因是我的my.cnf有话&#xff1a; skip-network 或 注释掉&#xff0c;然后重新启动下数据库&#xff0c;运行netstat -an|grep 3306 就可以看到了

学习笔记Day13:Linux进阶

Linux进阶 Vim——Linux自带的文本编辑器 功能强大 命令模式 使用 vim <file>进入后的默认模式可以上下左右移动光标 方向键/hjkl快速到所在行的开头^/末尾$向下移动30行30j&#xff08;上左右同&#xff09;上下翻页Ctrlf向上&#xff0c;Ctrlb向下翻页快速回到文件第…

docker 进入容器内部命令

docker容器运行了&#xff0c;怎么进入容器内部查看内部的文件情况呢&#xff1f; 答&#xff1a;可以通过docker exec 的命令查看。 docker exec --help 可以查看命令介绍 &#xff1a; docker exec -it XXX /bin/bash XX为容器ID 进入容器内部 /bin/bash是需要添加的 不…

MT管理器 使用手册

MT管理器 论坛&#xff1a;https://bbs.binmt.cc/ 使用技巧系列教程&#xff1a;https://www.52pojie.cn/thread-1259872-1-1.html MT管理器 使用手册 &#xff1a;https://mt2.cn/guide/&#xff1a;https://www.bookstack.cn/read/mt-manual/80b8084f6be128c0.md&#xff…