ReturnTmp's Blog ReturnTmp's Blog
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

ReturnTmp

分享有趣好玩的计算机知识
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • GLIBC_2.28 not found 问题解决
  • Monorepo 多项目单仓库
  • Renovate 第三方依赖更新监控
  • 【IDEA】Maven 构建项目生成文件解析
  • K8s

    • k8s 入门指南
      • 前言
      • Docker
        • 安装
        • 配置加速 (可选)
      • 集群搭建
        • kubeadm
        • minikube
        • 二进制包
      • Minikube
        • 安装
        • 启动集群
        • 启动仪表盘
      • kubeadm、kubelet 和 kubectl
        • kubectl
        • kubeadm 和 kubelet
      • 版本说明
      • 参考链接
    • K8s 集群 Windows 安装部署指南
    • K8s 部署
    • K8s 入门指南(一):单节点集群环境搭建
    • K8s 入门指南(一):单节点集群环境搭建(ubuntu)
    • K8s 入门指南(二):实战概念讲解
  • Zotero 使用指南
  • package-lock.json 是否提交问题
  • 『ARM』和『x86』处理器架构解析指南
  • GlassFish 安装配置
  • 手把手教你安装配置『Oracle Database 19c』
  • Oracle Database 19c 彻底卸载
  • 语雀故障回顾
  • OpenStack 云计算平台 Nova 计算服务学习指南
  • Vue devServer 教程
  • Swagger 导出 API 文档
  • MapStruct POJO 映射框架指南
  • IDEA 代码热部署和热加载
  • SpringBoot 启动参数配置
  • Nacos 入门指南
  • seleuim 指南
  • Spring 服务降级熔断
  • Maven BOM 解析
  • .vscode 文件夹
  • Spring Security Token 认证
  • SpringBoot 基于 Actuator 和 Admin 实现应用监控管理
  • SPM/SCM 流量跟踪体系
  • Netty 入门
  • Flyway 数据库版本管理实战指南
  • Swagger 2 和 3 安装区别
  • MP 配置分页
  • MySQL 分库分表
  • Git Commit 提交规范,变更日志、版本发布自动化和 Emoji 提交标准
  • VSCode 插件 i18n Ally 进行国家化配置
  • Vue3 组合式 全局挂载
  • TS 教程
  • 架构解析:同城双活、异地多活、单元化架构
  • Spring 跨域配置
  • SpringCloud 微服务实战
  • Sentinel 流量治理组件教程
  • leetcode 上分
  • JMeter 压测
  • Netty IM 系统
  • IDEA 插件开发
  • SpringBoot 邮件服务 集成配置 详解
  • Maven 依赖包冲突问题解决
  • 社区项目 forest 修改
  • Maven 项目命名规范
  • 新版 PyCharm 设置 Conda 虚拟环境
  • 框架工具
  • K8s
ReturnTmp
2023-09-26
目录

k8s 入门指南

# 前言

官方中文文档:Kubernetes 文档 | Kubernetes (opens new window)

注:本次使用版本为 Kubernetes v1.20.2,系统配置 CentOS 7.9

我在使用最新 1.28 版本某些镜像拉取失败,后面降到 1.20 ,但是也遇到同样问题,不过已解决,同时暂时没有使用最新版功能需求,也就索性没有再升级到 1.28。如果有需求可以直接安装最新版,文末也会给出升级版本的步骤

除此之外,如果有条件的推荐使用 Ubuntu 系统,官方社区长期维护,比较稳定

# Docker

# 安装

官方文档:Install Docker Engine on CentOS | Docker Docs (opens new window)

安装脚本如下

#!/bin/bash

set -e
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
1
2
3
4
5
6
7
8
9

# 配置加速 (可选)

阿里云镜像加速地址:容器镜像服务_镜像构建_镜像授权_镜像托管-阿里云 (aliyun.com) (opens new window)

image.png

然后复制上面地址,执行如下命令

# 更换镜像为阿里云
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
docker info
1
2
3
4
5
6
7
8

# 集群搭建

k8s 集群搭建有三种方式,目前主流的搭建 k8s 集群的方式有 kubeadm、minikube,二进制包

# kubeadm

  • 是一个工具,用于快速搭建kubernetes集群,目前应该是比较方便和推荐的,简单易用
  • kubeadm是Kubernetes 1.4开始新增的特性
  • kubeadm init 以及 kubeadm join 这两个命令可以快速创建 kubernetes 集群

# minikube

  • 一般用于本地开发、测试和学习,不能用于生产环境
  • 是一个工具,minikube快速搭建一个运行在本地的单节点的Kubernetes

# 二进制包

  • 在官网下载相关的组件的二进制包,上面的两个是工具,可以快速搭建集群,也就是相当于用程序脚本帮我们装好了集群,前两者属于自动部署,简化部署操作,自动部署屏蔽了很多细节,使得对各个模块感知很少,遇到问题很难排查,如果手动安装,对kubernetes理解也会更全面。
  • 目前生产环境的主流搭建方式,已在生产环境验证,kubeadm 也可以搭建生产环境,不过 kubeadm 应该还没有被大规模在生产环境验证

# Minikube

官方教程:minikube start | minikube (k8s.io) (opens new window)

# 安装

curl -Lo minikube "https://storage.googleapis.com/minikube/releases/v1.18.1/minikube-linux-amd64"
chmod +x minikube && sudo mv minikube /usr/local/bin/
1
2

# 启动集群

需要使用非 root 用户权限运行,如果使用 root 运行,需要添加参数 --force

# 国外线路启动
minikube start \
--driver=docker \
--force

# 国内线路启动
minikube start \
--driver=docker \
--image-mirror-country=cn \
--registry-mirror=https://registry.docker-cn.com \
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
--force
1
2
3
4
5
6
7
8
9
10
11
12

这里面可能遇到网络问题,导致下载二进制包失败

image.png

image.png

还可以参考如下 issue,也可以配置代理

issue:how to skip download kubeadm & kubelet . because I download these in $PATH. · Issue #3846 · kubernetes/minikube (github.com) (opens new window)

问题:Exiting due to INET_DOWNLOAD_TIMEOUT: updating control plane: downloading binaries: downloading kubelet: download failed

因为这些二进制包下载之后会缓存到 $MINIKUBE_HOME/.minikube/cache/$KUBE_VERSION/,比如说~/.minikube/cache/v1.13.3,那么我们需要的就是单独下载这些包,然后上传到对应文件夹下即可

我在上面的 issue 中找到一位老哥写的脚本,可以实现离线打包 k8s 启动,比较方便

仓库地址:kingonion/minikube-on-linux (opens new window)

更加方便的方法就是单独下载 kubeadm、kubelet 和 kubectl(直接跳转下面对应章节即可),这样的话这里 minikube 启动集群就不会出现超时错误

# 启动仪表盘

然后打开 Web 仪表盘,之后我们就可以在浏览器上创建 Kubernetes 资源,例如 Deployment 和 Service

# 打开仪表盘
minikube dashboard
# 不打开仪表盘,仅输出 url
minikube dashboard --url
1
2
3
4

注:要停止代理,请运行 Ctrl+C 退出该进程。仪表板仍在运行中。 命令退出后,仪表板仍然在 Kubernetes 集群中运行。 你可以再次运行 dashboard 命令创建另一个代理来访问仪表板

# kubeadm、kubelet 和 kubectl

# kubectl

官方文档:在 Linux 系统中安装并设置 kubectl | Kubernetes (opens new window)

安装命令

curl -Lo kubectl "https://storage.googleapis.com/kubernetes-release/release/v1.20.2/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
1
2

# kubeadm 和 kubelet

官方文档:安装 kubeadm | Kubernetes (opens new window)

kubeadm:用来初始化集群的指令。

kubelet:在集群中的每个节点上用来启动 Pod 和容器等。

kubectl:用来与集群通信的命令行工具。

kubeadm 不能帮你安装或者管理 kubelet 或 kubectl, 所以你需要确保它们与通过 kubeadm 安装的控制平面的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 然而,控制平面与 kubelet 之间可以存在一个次要版本的偏差,但 kubelet 的版本不可以超过 API 服务器的版本。 例如,1.7.0 版本的 kubelet 可以完全兼容 1.8.0 版本的 API 服务器,反之则不可以。

执行如下脚本 (自行替换版本),这是国外线路,由于网络原因实测失败

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.20.2/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.20.2/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
1
2
3
4
5
6
7
8
9
10
11

这是国内线路(实测成功)

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2 --disableexcludes=kubernetes
systemctl enable --now kubelet
1
2
3
4
5
6
7
8
9
10
11

# 版本说明

Kubernetes 版本表示为 x.y.z, 其中 x 是主要版本,y 是次要版本,z 是补丁版本

如果我们想要为 k8s 挑选生产环境的合适版本,可以参考各大云厂商,诸如华为,百度,微软,谷歌等,下面给出谷歌的版本发布表,供大家参考

文档:GKE 发布时间表  |  Google Kubernetes Engine (GKE)  |  Google Cloud (opens new window)

# 参考链接

  • CentOS7安装minikube - 张小凯的博客 (jasonkayzk.github.io) (opens new window)
  • kubernetes - minikube start error to pull new external images (opens new window)
  • k8s-集群搭建的三种方式和区别,kubeadm、minikube,二进制包 - 缘在此季 - 博客园 (cnblogs.com) (opens new window)
编辑 (opens new window)
上次更新: 2024/01/02, 01:26:45
【IDEA】Maven 构建项目生成文件解析
K8s 集群 Windows 安装部署指南

← 【IDEA】Maven 构建项目生成文件解析 K8s 集群 Windows 安装部署指南→

最近更新
01
百度网盘加速
03-24
02
新版 PyCharm 设置 Conda 虚拟环境
03-24
03
腾讯云域名转到阿里云
03-24
更多文章>
Theme by Vdoing | Copyright © 2023-2024 ReturnTmp | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式