kubeadm 内网离线安装

2023-05-16

离线安装过程,仅供参考,陆续更新。
机器三台
在这里插入图片描述
master 为01 slave 为03 04
以下步骤1到7,三台都需操作。

一. 关闭防火墙

在这里插入图片描述

二、关闭swap

swapoff -a
在这里插入图片描述

三、关闭selinux

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
setenforce 0
getenforce 确保为disabled
在这里插入图片描述

四. 设置hosts并做免密

在这里插入图片描述
在这里插入图片描述
我是三台之前互相都做免密

五.创建文件k8s.conf并添加如下内容

在这里插入图片描述
执行sysctl --system生效配置文件

也可以参照其他人的操作(该图来源于https://www.jianshu.com/p/cccbed8e85da)
在这里插入图片描述

六、安装docker

本地是通过代理yum安装
在这里插入图片描述

systemctl start docker
systemctl enable docker 设置开机自启动
systemctl restart docker
并查看docker info中的Cgroup的值,原来为
Cgroup Driver: cgroupfs 修改为systemd

七、安装k8s组件

本地也是通过代理安装kubeadm, kubelet, kubectl,版本需要一致,注意安装顺序,组件之间彼此存在依赖关系。
在这里插入图片描述

在这里插入图片描述
在安装过程中,由于内网环境缺少很多依赖,下图仅供参考。
在这里插入图片描述

八、安装核心组件

在master上操作
查看需下载哪些镜像
在这里插入图片描述
是在外网搭建了docker环境,进行镜像拉取,然后在导入内网进行安装。
在这里插入图片描述
在这里插入图片描述
在master节点上执行kubeadm init命令。
(如果使用flannel网络。则要把参数中必须设置–pod-network-cidr=
10.244.0.0/16,这个IP地址是固定)

kubeadm init --kubernetes-version=v1.22.11
–apiserver-advertise-address=11.12.4.106
–pod-network-cidr=10.244.0.0/16
在这里插入图片描述
如果出现该界面,表示安装成功。然后执行图中三条语句(mkdir cp chown)。
最后一句为节点加入master时执行。
**在两台slave上安装了一些组件。**如 图。
在这里插入图片描述
复制图中语句kubeadm join 分别在两台slave中执行。
在这里插入图片描述
表示安装成功。执行master执行 kubectl get no查看三台状态。
在这里插入图片描述

九、安装网络组件(选择flannel网络插件)

三个节点都为not ready状态,因为网络组件还没安装。三台机器都需要安装插件。(cni-plugin可能是多安装了)。镜像也都是在外网下载好docker load 导入。

在这里插入图片描述

创建kube-flannel.yml,并执行。
kubectl apply -f kube-flannel.yml
如果更换yml文件,先执行kubectl delete -f kube-flannel.yml删除,然后再apply。(因为该文件耽误了诸多时间,截图该文件内容仅供参考。)

其中两处 image: k8s.gcr.io/flannel:v0.10.0-amd64需要更改为自己的镜像版本(如上图),

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: psp.flannel.unprivileged
  annotations:
    seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default
    seccomp.security.alpha.kubernetes.io/defaultProfileName: docker/default
    apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default
    apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default
spec:
  privileged: false
  volumes:
  - configMap
  - secret
  - emptyDir
  - hostPath
  allowedHostPaths:
  - pathPrefix: "/etc/cni/net.d"
  - pathPrefix: "/etc/kube-flannel"
  - pathPrefix: "/run/flannel"
  readOnlyRootFilesystem: false
  # Users and groups
  runAsUser:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  # Privilege Escalation
  allowPrivilegeEscalation: false
  defaultAllowPrivilegeEscalation: false
  # Capabilities
  allowedCapabilities: ['NET_ADMIN', 'NET_RAW']
  defaultAddCapabilities: []
  requiredDropCapabilities: []
  # Host namespaces
  hostPID: false
  hostIPC: false
  hostNetwork: true
  hostPorts:
  - min: 0
    max: 65535
  # SELinux
  seLinux:
    # SELinux is unused in CaaSP
    rule: 'RunAsAny'
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: flannel
rules:
- apiGroups: ['extensions']
  resources: ['podsecuritypolicies']
  verbs: ['use']
  resourceNames: ['psp.flannel.unprivileged']
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - nodes/status
  verbs:
  - patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: flannel
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flannel
subjects:
- kind: ServiceAccount
  name: flannel
  namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flannel
  namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  labels:
    tier: node
    app: flannel
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "cniVersion": "0.3.1",
      "plugins": [
        {
          "type": "flannel",
          "delegate": {
            "hairpinMode": true,
            "isDefaultGateway": true
          }
        },
        {
          "type": "portmap",
          "capabilities": {
            "portMappings": true
          }
        }
      ]
    }
  net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan"
      }
    }
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: kube-flannel-ds
  namespace: kube-system
  labels:
    tier: node
    app: flannel
spec:
  selector:
    matchLabels:
      app: flannel
  template:
    metadata:
      labels:
        tier: node
        app: flannel
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/os
                operator: In
                values:
                - linux
      hostNetwork: true
      priorityClassName: system-node-critical
      tolerations:
      - operator: Exists
        effect: NoSchedule
      serviceAccountName: flannel
      initContainers:
      - name: install-cni
        image: k8s.gcr.io/flannel:v0.10.0-amd64
        command:
        - cp
        args:
        - -f
        - /etc/kube-flannel/cni-conf.json
        - /etc/cni/net.d/10-flannel.conflist
        volumeMounts:
        - name: cni
          mountPath: /etc/cni/net.d
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      containers:
      - name: kube-flannel
        image: k8s.gcr.io/flannel:v0.10.0-amd64
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        resources:
          requests:
            cpu: "100m"
            memory: "50Mi"
          limits:
            cpu: "100m"
            memory: "50Mi"
        securityContext:
          privileged: false
          capabilities:
            add: ["NET_ADMIN", "NET_RAW"]
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        volumeMounts:
        - name: run
          mountPath: /run/flannel
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      volumes:
      - name: run
        hostPath:
          path: /run/flannel
      - name: cni
        hostPath:
          path: /etc/cni/net.d
      - name: flannel-cfg
        configMap:
          name: kube-flannel-cfg

成功后,如图。
在这里插入图片描述
在这里插入图片描述

kubeadm config print init-defaults 显示kubeadm.yaml版本信息。
如果flannel等pod没起或报错,查看pod日志,网上基本都有解决办法。
1.在此次安装过程中,有通过删除相关错误容器,然后容器自启动会恢复
2. 有的在执行kubeadm init执行没加参数,–pod-network-cidr=
10.244.0.0/16。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kubeadm 内网离线安装 的相关文章

  • idea中添加maven远程仓库

    idea无法自动下载依赖的解决方法 xff1a 1 xff1a 选择自己的maven目录 配置文件setting xml和仓库repository xff0c 并勾选2个Override 2 点击Runner 在VM Options那一行添
  • 详解C++中的指针结构体数组以及指向结构体变量的指针

    这篇文章主要介绍了C 43 43 中的指针结构体数组以及指向结构体变量的指针的用法 是C 43 43 入门学习中的基础知识 需要的朋友可以参考下 C 43 43 结构体数组 一个结构体变量中可以存放一组数据 xff08 如一个学生的学号 姓
  • bad substitution

    初接触shell脚本 xff0c 在vim中写代码 xff0c 出现了好几次 Bad substitution 我的错误有两种 xff1a 开始的的指定脚本环境 应该是 bin bash 在编译运行时 也应该用 bash 的使用错误 xff
  • Re.从零开始--基于UbuntuServer 20.04-OpenStack平台搭建_

    基于UbuntuServer 20 04 OpenStack平台搭建 前言 xff1a 本文档基于ubuntu server20 04版本和OpenStack Victoria搭建openstack环境 部署最小化Ubuntu openst
  • win10系统vvv连接不上,提示:“在连接完成前,连接被远程计算机终止”的解决办法

    进入 控制面板 网络和共享中心 更改适配器设置 右键点 vvv连接 属性 安全 选择 允许使用这些协议 xff0c 以下选项全部打勾即可 未加密的密码 质询握手身份验证协议 Microsoft CHAP Version2
  • CSP 2021 S组游记

    这是异想之旅的一篇水文 xff0c 技术无关 占个坑 xff0c 晚上更新 说说初赛 xff1a 我的竞赛老师是很重视初赛的 xff0c 整个暑假一半的时间集训 xff0c 而一半的集训时间都是面对初赛 模拟题大家做的量不同 xff0c 但
  • linux命令解压压缩rar文件的详细步骤

    一 widonds下打包rar文件并上传 yum install lrzsz rz test rar 二 下载并安装rar软件 2 1 下载 mkdir p home oldboy tools cd home oldboy tools wg
  • 配置pvst详解

    配置 pvst 在学习pvst之前 xff0c 先要学习一下stp STP生成树 思科默认有stp配置 1 选择根网桥 xff08 root bridge xff09 xff08 这个是必须的配置 xff09 选择根网桥的依据是网桥ID x
  • (真)手把手教你配置Ubuntu大数据Hadoop环境

    目录 一 前期准备 VMware tools安装 基本配置 root配置 网络配置 软件源配置 二 创建hadoop用户和文件 用户创建 小插曲 三 FTP配置 四 配置java环境及安装eclipse 安装eclipse 安装java环境
  • Ubuntu安装配置hbase完美解决方案

    目录 一 解决版本号打印失败问题 二 配置伪分布式 三 运行简单的hbase shell命令 这篇文章需要配合前一篇文章一起食用更加美味 xff08 真 xff09 手把手教你配置Ubuntu大数据Hadoop环境 一 解决版本号打印失败问
  • Linux shell实现阶乘

    bin sh read p 34 请输入想计算的数字 34 num 首先定义一个num参数接受为命令行的第一个参数 expr num 43 1 amp gt dev null 利用expr计算时参数必须是整数的原则 xff0c 如果返回零则
  • DHCP服务器搭建

    DHCP服务器搭建 安装dhcp服务器 使用yum y install dhcp 命令安装dhcp服务 修改配置文件 修改最大租约和默认租约为8天和2天 修改地址池 网关地址 以及子网掩码相关配置 总配置如下 Dhcp服务启动成功
  • idea使用技巧

    idea使用技巧 快速创建测试类 找到你想要测试的类 xff0c 按下crtl 43 shift 43 t或者右键 之后就会自动在maven的test xff08 只要是符合maven规约的文件即可 xff09 里面添加相应的测试类 测试类
  • Spring Tools Suit 4

    Spring Tools Suit 4使用手册 最近公司不让用破解版的idea xff0c 被迫转为eclipse xff0c 又因为项目大多都是spring的 xff0c 所以用spring封装好的Spring Tool Suite 4简
  • 基于Debian的发行版有哪些

    基于Debian的发行版有哪些 原创2023 04 05 08 24 贺浦力特 Debian 是一款由志愿者开发者团队创建 持续开发和维护的自由 开源的操作系统 xff0c 它以稳定 可靠和安全而著称 Debian 采用 apt 包管理工具
  • 修改JLabel背景色

    如何修改JLabel背景色 xff1f 搞笑 JLabel label 61 new JLabel label setBackground Color RED it does not work 当我们把JLabel控件加载到JPanel控件
  • Linux上启动盘制作工具大比拼

    启动盘制作工具是一种软件 xff0c 它可以帮助您将ISO镜像文件 xff0c 如Windows操作系统安装程序 xff0c 制作成可启动的U盘或光盘 xff0c 以便在需要安装操作系统或修复系统时使用 windows上制作启动盘的工具有很
  • IDEA连接SVN服务器地址拉代码,报错提示E230001: Server SSL certificate verification failed: certificate issued“验证失败问题

    问题描述 今天在使用idea拉取svn代码的时候无法操作 提示E230001 Server SSL certificate verification failed certificate issued xff0c 原因是由于SVNssl证书
  • 用c语言写一个大规模矩阵遍历的程序,在不同规模的数据下运行,比较按行遍历快还是按列遍历快。

    用c语言写一个大规模矩阵遍历的程序 xff0c 在不同规模的数据下运行 xff0c 比较按行遍历快还是按列遍历快 1 xff09 本题老师的考察点 xff1a 矩阵在计算机内存储的方式 2 xff09 解答本题时遇到的一些问题 xff1a
  • 利用Dockerfile创建指定镜像

    Dockerfile小贴士 docker允许创建自己的docker镜像 dockerfile是一个用于创建docker镜像的配置文件 xff0c 文本格式 xff0c 里面包含了创建镜像的指令 xff0c docker通过读取dockerf

随机推荐