从零开始离线安装k8s集群

2023-05-16

本文主要用于在内网(离线)环境安装k8s集群;linux环境 centos7.6

主要步骤有:

  1. 安装docker
  2. 创建dokcer 私有镜像库 registry
  3. 安装kubernetes
  4. 安装flannel

1.离线安装docker

下载离线安装包https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

docker-ce-cli-18.09.7-3.el7.x86_64.rpm

docker-ce-18.09.7-3.el7.x86_64.rpm

container-selinux-2.107-1.el7_6.noarch.rpm

containerd.io-1.2.2-3.el7.x86_64.rpm

  1. 上传到指定服务器,安装命令  rpm -ivh *.rpm
  2. docker info 查看docker信息
  3. 修改cgoupdriver为systemd与k8b保持一致,vim /etc/docker/daemon.json

{

  "registry-mirrors": ["https://registry.docker-cn.com"],

  "exec-opts": ["native.cgroupdriver=systemd"]

}

  1. systemctl  daemon-reload
  2. systemctl  restart docker
  3. 设置开机启动  systemctl enabel docker

 

2.创建dokcer 私有镜像库 registry

1.在有外网环境的docker中下载镜像,并启动;

docker pull registry:2

2.从image导出镜像

docker save -o registry.tar registry:2

3.上传registry.tar到离线服务器,导入

docker load -I registry

4.启动

docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2

5.修改k8s集群节点的dokcer daemon.json  支持https

{

  "registry-mirrors": ["https://registry.docker-cn.com"],

  "exec-opts": ["native.cgroupdriver=systemd"],

  "insecure-registries": ["10.209.68.12:5000"]

}

systemctl  daemon-reload

systemctl  restart docker

3.安装k8s

环境准备

  1. 关闭 防火墙、SeLinux、swap

# 在 master 节点和 worker 节点都要执行

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# 关闭 swap

swapoff -a

yes | cp /etc/fstab /etc/fstab_bak

cat /etc/fstab_bak |grep -v swap > /etc/fstab

  1. hostnamectl set-hostname master

需要设置其他主机名称时,可将 master 替换为正确的主机名node1、node2即可。

  1. 配置内核参数,将桥接的IPv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf <<EOF

 

net.bridge.bridge-nf-call-ip6tables = 1

 

net.bridge.bridge-nf-call-iptables = 1

 

EOF

 

sysctl –system

2,安装kubeadm/kubectl/kubelet

在有网络的服务器上下载需要的rpm安装包

  1. 配置kubeadm源

# cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[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

  1. yum install --downloadonly --downloaddir=/home/centos/k8s kubeadm kubectl kubelet
  2. 上传rpm包到离线服务器 安装

rpm -ivh *.rpm

设置开机启动 systemctl enable kubelet.service

 

  1. 获取镜像列表

# kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.18.0

k8s.gcr.io/kube-controller-manager:v1.18.0

k8s.gcr.io/kube-scheduler:v1.18.0

k8s.gcr.io/kube-proxy:v1.18.0

k8s.gcr.io/pause:3.2

k8s.gcr.io/etcd:3.4.3-0

k8s.gcr.io/coredns:1.6.7

  1. 离线镜像

编写脚本,从阿里云下载镜像

# cat pull-images.sh

#!/bin/bash

images=(

    kube-apiserver:v1.18.0

    kube-controller-manager:v1.18.0

    kube-scheduler:v1.18.0

    kube-proxy:v1.18.0

    pause:3.2

    etcd:3.4.3-0

    coredns:1.6.7

)

for imageName in ${images[@]};

do

    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}

    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}

    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}

done

  1. 执行脚本,然后查看镜像

# docker images

REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE

k8s.gcr.io/kube-proxy                v1.18.0             43940c34f24f        7 days ago          117MB

k8s.gcr.io/kube-apiserver            v1.18.0             74060cea7f70        7 days ago          173MB

k8s.gcr.io/kube-controller-manager   v1.18.0             d3e55153f52f        7 days ago          162MB

k8s.gcr.io/kube-scheduler            v1.18.0             a31f78c7c8ce        7 days ago          95.3MB

k8s.gcr.io/pause                     3.2                 80d28bedfe5d        6 weeks ago         683kB

k8s.gcr.io/coredns                   1.6.7               67da37a9a360        2 months ago        43.8MB

k8s.gcr.io/etcd                      3.4.3-0             303ce5db0e90        5 months ago 

  1. 打包镜像

编写脚本打包镜像

# cat save-images.sh

#!/bin/bash

images=(

    kube-apiserver:v1.18.0

    kube-controller-manager:v1.18.0

    kube-scheduler:v1.18.0

    kube-proxy:v1.18.0

    pause:3.2

    etcd:3.4.3-0

    coredns:1.6.7

)

for imageName in ${images[@]};

do

    docker save -o `echo ${imageName}|awk -F ':' '{print $1}'`.tar k8s.gcr.io/${imageName}

done

压缩下载,上传到离线服务器;

tar czvf kubeadm-images-1.18.0.tar.gz *.tar

  1. 导入镜像

在安装节点分别导入离线镜像或者放入私有仓库使用

# cat load-image.sh

#!/bin/bash

ls /root/kubeadm-images-1.18.0 > /root/images-list.txt

cd /root/kubeadm-images-1.18.0

for i in $(cat /root/images-list.txt)

do

     docker load -i $i

done

导入镜像

# ./load-image.sh

3,初始化master节点

kubeadm init --apiserver-advertise-address 10.209.69.12 --apiserver-bind-port 6443 --kubernetes-version 1.18.0 --pod-network-cidr 10.244.0.0/16 --service-cidr 10.1.0.0/16

 

mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

4,加入子节点

Then you can join any number of worker nodes by running the following on each as root:

 

kubeadm join 10.209.69.12:6443 --token voj8z6.ytej05mfnul5gci7 \

    --discovery-token-ca-cert-hash sha256:d12c6150f5752238e8eabe81403ff4defaf2aeb1a1c159ed7310e027b367b57b

安装flannel

下载https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml文件

把里面依赖的image都在有网络环境中下载下来;

 

导入私有镜像库;

docker tag xxx:vxxx 10.209.69.12:5000/xxx:vxxx

docker push 10.209.69.12:5000/xxx:vxxx

修改yml中镜像为私有镜像库中的包

部署

kubectl apply -f flannel.yml

查看节点  是否为ready

kubectl get nodes

 

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

从零开始离线安装k8s集群 的相关文章

  • [云原生专题-22]:K8S - 集群编排工具K8S与SWARM比较与技术选择

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122750196 目录 前言 第1章
  • K8s基础10——数据卷、PV和PVC、StorageClass动态补给、StatefulSet控制器

    文章目录 一 数据卷类型 1 1 临时数据卷 节点挂载 1 2 节点数据卷 节点挂载 1 3 网络数据卷NFS 1 3 1 效果测试 1 4 持久数据卷 PVC PV 1 4 1 效果测试 1 4 2 测试结论 二 PV PVC生命周期 2
  • CNI Plugin 介绍

    CNI 插件包括两种类型 CNI Plugin 和 IPAM IP Address Management Plugin CNI Plugin 负责为容器配置网络资源 IPAM Plugin 负责对容器的 IP 地址进行分配和管理 IPAM
  • K8S 工作负载(一)

    K8S 工作负载 1 Pod Pod 是 Kubernetes 中创建 管理和调度的最小计算单元 用户可以在 K8S 中通过调用 Pod API生成一个 Pod 让 K8S 对其进行调度 Pod 是一组 一个或多个 容器 这些容器共享存储
  • kubeadm常用

    kubeadm常用 配置kubeadm自动补全 初始化一个master节点 导出kubeadm默认配置文件 将node节点加入集群 生成node配置 升级k8s版本 kubeadm升级node 维护或下线node节点 管理kubeadm j
  • underlay和overlay? & 传统网络和数据中心网络 ?

    underlay和overlay 百度 Underlay 和 Overlay 是网络架构中两个常用的概念 用于描述不同层次或视角下的网络结构和通信方式 1 Underlay 底层网络 Underlay 是指基础网络层 即物理网络或基础网络架
  • k8s系统获取真实客户端ip

    k8s部署 系统获取真实客户端ip 我们生产中使用的是kong网关环境的架构也不同 第一种kong网管后走nginx 第二种kong网管后不走nginx kong网管后走ingress nginx 修改kong的配置 配置要信任的原始IP地
  • K8s-yaml的使用及命令

    YAML配置文件管理对象 对象管理 创建deployment资源 kubectl create f nginx deployment yaml 查看deployment kubectl get deploy 查看ReplicaSet kub
  • k8s英伟达GPU插件(nvidia-device-plugin)

    安装方法 Installation Guide NVIDIA Cloud Native Technologies documentation 1 本地节点添加 NVIDIA 驱动程序 要求 NVIDIA drivers 384 81 先确保
  • kubernetes集群更新证书(kubeadm方式)

    一 kubernets证书详情 1 查看证书 tree etc kubernetes pki etc kubernetes pki apiserver crt apiserver etcd client crt apiserver etcd
  • docker下mysql镜像初始化

    目录 1 介绍 2 部署及验证 2 1 场景复现 2 2 创建dockerfile 2 3 初始化脚本 2 4 构建镜像并查看 2 5 创建容器并验证 2 6 完成 1 介绍 原理 当Mysql容器首次启动时 会在 docker entry
  • kubeadm方式部署k8s最新版本V1.26.2

    Kubernetes核心概念 Master主要负责资源调度 控制副本 和提供统一访问集群的入口 核心节点也是管理节点 Node是Kubernetes集群架构中运行Pod的服务节点 Node是Kubernetes集群操作的单元 用来承载被分配
  • k8s部署之ETCD集群

    k8s部署之ETCD集群 1 etcd下载 etcd下载地址 https github com coreos etcd releases 从github etcd的发布页面选取相应的版本用 wget url 来下载 如 wget https
  • Rancher 全球化部署最佳实践

    作者 万绍远 CNCF 基金会官方认证 Kubernetes CKA CKS 工程师 云原生解决方案架构师 对 ceph Openstack Kubernetes prometheus 技术和其他云原生相关技术有较深入的研究 参与设计并实施
  • kubeadm构建(Calico+Dashboard+Containerd)

    文章目录 前言 一 环境 二 部署容器网络 CNI master操作 1 下载yamll 2 修改yaml 3 部署 三 部署 Dashboard 1 下载yaml 2 修改yaml 3 部署 4 创建管理员 四 切换容器引擎为Contai
  • k8s问题 CrashLoopBackOff

    我们创建资源发现资源出现CrashLoopBackOff解决 CrashLoopBackOff 告诉我们 Kubernetes 正在尽力启动这个 Pod 但是一个或多个容器已经挂了 或者正被删除 root localhost kubectl
  • k8备份与恢复-Velero

    简介 Velero 是一款可以安全的备份 恢复和迁移 Kubernetes 集群资源和持久卷等资源的备份恢复软件 Velero 实现的 kubernetes 资源备份能力 可以轻松实现 Kubernetes 集群的数据备份和恢复 复制 ku
  • 决战k8s,Kubernetes、Master节点部署组件,部署kube-proxy、测试、部署Dashboard(Web UI)、超细详解 ,安装篇③完结篇

    文章目录 下面这些操作在master节点完成 创建kubeconfig文件 创建kube proxy kubeconfig文件 下面这些操作在node节点完成 俩个节点上面拉取镜像 systemd管理kubelet组件 部署kube pro
  • DHorse v1.3.2 发布,基于 k8s 的发布平台

    版本说明 新增特性 构建版本 部署应用时的线程池可配置化 优化特性 构建版本跳过单元测试 解决问题 解决Vue应用详情页面报错的问题 解决Linux环境下脚本运行失败的问题 解决下载Maven安装文件失败的问题 升级说明 下载v1 3 2安
  • K8S学习--Kubeadm-7--Ansible二进制部署

    K8S学习 Kubeadm 安装 kubernetes 1 组件简介 K8S学习 Kubeadm 安装 kubernetes 2 安装部署 K8S学习 Kubeadm 3 dashboard部署和升级 K8S学习 Kubeadm 4 测试运

随机推荐

  • PyInstaller 将DLL文件打包进exe

    PyInstaller 将DLL文件打包进exe 方法1 xff1a 通过 add data命令方法2 xff1a 通过修改 spec扩展 xff1a 博主热门文章推荐 xff1a 方法1 xff1a 通过 add data命令 注意 xf
  • PyInstaller 使用UPX压缩减少exe大小

    PyInstaller 使用UPX压缩减少exe大小 1 背景2 下载UPX3 使用UPX博主热门文章推荐 xff1a 1 背景 Python打包成exe文件一大痛点就是文件size过大 xff0c 而使用UPX压缩可以改善一些 xff08
  • Exe合并压缩:将dll等文件依赖压缩到一个exe中

    Exe合并压缩 xff1a 将dll等文件依赖压缩到一个exe中 1 背景2 压缩方法3 配置自解压 xff08 SFX xff09 选项4 执行新的exe博主热门文章推荐 xff1a 1 背景 如果exe对某些dll有依赖 xff0c 并
  • RP2040配置VSCODE开发环境——一劳永逸版

    前言 前面的环境搭建基本上介绍了所有的开发环境配置 xff0c 也对比了各个环境的优劣 个人认为 xff0c 非商业开发的话 xff0c 可能Segger Embedded Studio是最好的 xff0c 但是我不太习惯他的使用方式 这个
  • 如何编辑页面 mediawiki

    Help 如何编辑页面 维基百科 xff0c 自由的百科全书 编辑一个Wiki页面十分容易 只要点击页面上方的 编辑本页 或右侧的 编辑 链接即可修改该页 xff0c 或点击 讨论本页 然后再点击 编辑页面 来讨论该页面 點擊後您就会看到一
  • PyQt6: 多网卡适配器的选择与显示(GPT4帮写)

    PyQt6 多网卡适配器的选择与显示 1 背景2 Python获取本机网卡适配器信息3 PyQT6 UI显示网卡信息4 PyQT6 后台处理 xff1a ButtonComboBox 附 xff1a GPT Output xff1a 博主热
  • Pyqt5的安装(Visual Studio Code)

    Pyqt5的安装 xff08 Visual Studio Code xff09 我的第一个博客就拿我现在正在准备的比赛来写吧 xff01 首先 xff0c 我们得安装一个 xff0c Visual Studio Code 安装的网址如下 x
  • [ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (674) SourceReade

    capture 61 cv2 VideoCapture 0 出现警告 xff1a WARN 0 global C projects opencv python opencv modules videoio src cap msmf cpp
  • 租用游艇问题(动态规划)

    问题描述 xff1a 长江游艇俱乐部在长江上设置了n个游艇出租战1 xff0c 2 xff0c xff0c n 游客可以在这些游艇出租站租用游艇 xff0c 并在下游的任何一个游艇出租站归还游艇 游艇出租站 i 到游艇出租站 j 之间的租金
  • 对照JAVA学习Rust(07)--类和结构体

    1 Java类和Rust结构体 对象体结构 xff0c Java的类定义可包括属性和函数 xff0c 或常量 而Rust 结构体里只有属性字段 xff0c 函数需要在关联到架构体使用impl 结构体名如以下例子 JavaRust publi
  • HDU 3700 Cat

    Cat Time Limit 2000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 451 Accepted Submissio
  • 解决supervisorctl引起的java进程oom一启动就被killed

    使用 supervisor 管理进程 当发现 某一个java进程 已启动就被killed 一直以为是程序哪里或者docker的内存有问题 原来是supervisor的一个命令 我的启动 java jar 放在了 某个 bash脚本中 sup
  • 以太网的帧间隙、前导码、帧开始定界符

    每个以太帧之间都要有帧间隙 xff08 Interframe Gap xff09 xff0c 即每发完一个帧后要等待一段时间才能再发 另外一个帧 xff0c 以便让帧接收者对接收的帧作必要的处理 xff08 如调整缓存的指针 更新计数 通知
  • Error: L6218E: Undefined symbol LED_Init (referred from main.o).

    在使用Keil软件的过程中 xff0c 经常会出现这种报错 xff0c undefined symbol xxxx referred from xxx o 这个时候大多是 c文件没有被包含在相应的路径中 xff0c o文件在我们的工程中没有
  • 让老照片重现光彩:Bringing Old Photos Back to Life(实战)

    Bringing Old Photos Back to Life 香港城市大学和微软亚洲研究院的 让老照片重现光彩 xff08 Bringing Old Photos Back to Life xff09 项目侧重于对老照片进行划痕修复和人
  • GitLab配置ssh key:gitlab add an ssh key

    一 检查 创建SSH Key 在用户主目录下 xff0c 看看有没有 ssh目录 xff0c 如果有 xff0c 再看看这个目录下有没有id rsa和id rsa pub这两个文件 xff0c 如果已经有了 xff0c 可直接跳到下一步 如
  • 请求头(request headers)和响应头(response headers)解析

    请求头 xff08 request headers xff09 POST user signin HTTP 1 1 请求方式 文件名 http版本号 Host passport cnblogs com 请求地址 Connection kee
  • Tableau基础操作——连接数据源

    Tableau基础操作 连接数据源 Tableau基础操作 连接数据源 前言 随着大数据时代的到来 xff0c 借助于数据分析工具深入分析并可视化呈现变得越来越重要 而Tableau以其低功能强大且学习成本低被越来越多的企业所使用 一 Ta
  • linux下休眠/待机命令

    if you cat sys power state mem disk you can echo mem gt sys power state 这相当于待机 echo disk gt sys power state 这相当于休眠 from
  • 从零开始离线安装k8s集群

    本文主要用于在内网 xff08 离线 xff09 环境安装k8s集群 xff1b linux环境 centos7 6 主要步骤有 xff1a 安装docker创建dokcer 私有镜像库 registry安装kubernetes安装flan