Kubernetes (k8s) v1.19.0 安装部署,单机部署

2023-11-11

系统准备

环境准备

部署集群没有特殊说明均使用root用户执行命令

硬件信息

k8s-master 内存16GB 硬盘20GB k8s 控制节点 + Node节点

软件信息

CentOS Linux release 7.6.1810 (Core)

Kubernetesv1.19.0

Docker 19.03.12

修改主机名

 

hostnamectl set-hostname k8s-master

关闭防火墙 (仅用于测试,生产请不要使用)

 

systemctl disable --now firewalld

禁用swap

 

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

关闭 SELinux

 

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

设置系统时区、同步时间

 

timedatectl set-timezone Asia/Shanghai
systemctl enable --now chronyd
# 将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务
systemctl restart rsyslog && systemctl restart crond

部署docker

添加docker yum源

 

# 安装必要依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加aliyun docker-ce yum源
yum -y install yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 重建yum缓存
yum makecache fast
安装指定版本docker
yum install -y docker-ce-19.03.12-3.el7

确保网络模块开机自动加载

 

lsmod | grep overlay
lsmod | grep br_netfilter

若上面命令无返回值输出或提示文件不存在,需执行以下命令:

 

cat > /etc/modules-load.d/docker.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter

使桥接流量对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

验证是否生效,均返回 1 即正确

 

sysctl -n net.bridge.bridge-nf-call-iptables
sysctl -n net.bridge.bridge-nf-call-ip6tables

配置docker

 

mkdir /etc/docker
#修改cgroup驱动为systemd[k8s官方推荐]、限制容器日志量、修改存储类型,最后的docker家目录可修改
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "registry-mirrors": ["https://7uuu3esz.mirror.aliyuncs.com"],
  "data-root": "/data/docker"
}
EOF
#添加开机自启,立即启动
systemctl enable --now docker
systemctl daemon-reload
systemctl restart docker

部署kubernetes

添加kubernetes源

 

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=1
repo_gpgcheck=1
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添加证书认证
yum makecache fast

查看安装版本

 

yum list |grep kubelet
yum list |grep  kubeadm
yum list |grep  kubectl

安装kubeadm、kubelet、kubectl

 

yum install -y kubelet-1.19.0-0 --disableexcludes=kubernetes
yum install -y kubeadm-1.19.0-0 --disableexcludes=kubernetes
yum install -y kubectl-1.19.0-0 --disableexcludes=kubernetes
systemctl enable --now kubelet

配置自动补全命令

 

#安装bash自动补全插件
yum install bash-completion -y
#设置kubectl与kubeadm命令补全,下次login生效
kubectl completion bash >/etc/bash_completion.d/kubectl
kubeadm completion bash > /etc/bash_completion.d/kubeadm

预拉取kubernetes镜像

 

kubeadm config images list --kubernetes-version v1.19.0

新建脚本get-k8s-images.sh,内容如下:

 

#!/bin/bash
# Script For Quick Pull K8S Docker Images
# by qiraosky <qiraosky@qq.com>

KUBE_VERSION=v1.19.0
PAUSE_VERSION=3.2
CORE_DNS_VERSION=1.7.0
ETCD_VERSION=3.4.9-1

# pull kubernetes images from hub.docker.com
docker pull kubesphere/kube-proxy-amd64:$KUBE_VERSION
docker pull kubesphere/kube-controller-manager-amd64:$KUBE_VERSION
docker pull kubesphere/kube-apiserver-amd64:$KUBE_VERSION
docker pull kubesphere/kube-scheduler-amd64:$KUBE_VERSION
# pull aliyuncs mirror docker images
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$CORE_DNS_VERSION
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION
docker pull quay.io/coreos/flannel:v0.12.0-arm64
docker pull quay.io/coreos/flannel:v0.12.0-amd64

# retag to k8s.gcr.io prefix
docker tag kubesphere/kube-proxy-amd64:$KUBE_VERSION  k8s.gcr.io/kube-proxy:$KUBE_VERSION
docker tag kubesphere/kube-controller-manager-amd64:$KUBE_VERSION k8s.gcr.io/kube-controller-manager:$KUBE_VERSION
docker tag kubesphere/kube-apiserver-amd64:$KUBE_VERSION k8s.gcr.io/kube-apiserver:$KUBE_VERSION
docker tag kubesphere/kube-scheduler-amd64:$KUBE_VERSION k8s.gcr.io/kube-scheduler:$KUBE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION k8s.gcr.io/pause:$PAUSE_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$CORE_DNS_VERSION k8s.gcr.io/coredns:$CORE_DNS_VERSION
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION k8s.gcr.io/etcd:$ETCD_VERSION

# untag origin tag, the images won't be delete.
docker rmi kubesphere/kube-proxy-amd64:$KUBE_VERSION
docker rmi kubesphere/kube-controller-manager-amd64:$KUBE_VERSION
docker rmi kubesphere/kube-apiserver-amd64:$KUBE_VERSION
docker rmi kubesphere/kube-scheduler-amd64:$KUBE_VERSION
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE_VERSION
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$CORE_DNS_VERSION
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD_VERSION

脚本添加可执行权限,执行脚本拉取镜像:

 

chmod +x get-k8s-images.sh
./get-k8s-images.sh

初始化kube-master

修改kubelet配置默认cgroup driver

 

mkdir -p /var/lib/kubelet/
cat > /var/lib/kubelet/config.yaml <<EOF
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF
systemctl restart kubelet

测试环境是否正常(WARNING是正常的)

 

kubeadm init phase preflight

初始化master 10.244.0.0/16是flannel固定使用的IP段,设置取决于网络组件要求

 

kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.19.0

配置master认证

 

echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' >> /etc/profile
source /etc/profile

安装网络组件flannel

 

# 注意这里下载kubectl apply -f kube-flannel.yaml需要科学上网
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 
kubectl apply -f kube-flannel.yaml

查看kube-master节点状态

 

kubectl get nodes

如果长时间达不到 ready 可以查看所有pod 状态

 

kubectl get pods --all-namespaces

如果有pod有异常,可以查看描述以解决异常

 

kubectl -n kube-system describe  pod-id

Kubernetes 将Pod调度到Master节点(单机运行K8S)去除 master 的污点
出于安全考虑,默认配置下Kubernetes不会将Pod调度到Master节点。如果希望将k8s-master也当作Node使用,可以执行如下命令:

 

kubectl taint node k8s-master node-role.kubernetes.io/master-

其中k8s-master是主机节点hostname如果要恢复Master Only状态,执行如下命令:

 

kubectl taint node k8s-master node-role.kubernetes.io/master=""

 

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

Kubernetes (k8s) v1.19.0 安装部署,单机部署 的相关文章

  • dedecms织梦系统基本参数添加内容后首页显示后台空白不显示

    最近跟版网的小编在测试织梦模板时候发现 添加首页名称 版权信息 备案号等 保存后首页能显示 但是后台却没有文字 更新缓存也没用 那么这种情况该如何解决呢 小编告诉您 找到 dede templets sys info htm这个文件 里边找
  • syslog协议介绍

    syslog协议介绍 syslog架构 Unix Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的 syslog是一种标准的协议 分为客户端和服务器端 客户端是产生日志消息的一方 而服务器端负责接收客户端发送来的日
  • python unicodedecodeerror utf8_python问题,我运用python做中文词频分析的时候总是显示UnicodeDecodeError: 'utf-8'问题?...

    以下是我在python3 7idle中写的的语句importjiebatxt open E study pythondata 应用资料 三国演义 txt r encoding utf 8 read words jieba lcut txt
  • “Dependency ‘com.mysql:mysql-connector-j:‘ not found “等无法找到依赖问题解决

    在创建新的springboot项目时如果碰到 说明在该新建的项目中没有导入下列依赖 本人解决步骤 1 新建一个Maven工程 2 在该工程中加入自己想创建的springboot模块 3 将爆红的依赖复制粘贴进Maven项目中的pom xml
  • Mybatis查询where条件报 java.lang.IllegalStateException: range unbounded on this side解决方案

    Mybatis查询where条件报 java lang IllegalStateException range unbounded on this side解决方案 问题背景 解决方案 Lyric 就算是我不懂 问题背景 在使用id进行条件
  • docker-compose的使用

    一 docker compose命令 docker compose的使用非常类似于docker命令的使用 但是需要注意的是大部分的compose命令都需要到docker compose yml文件所在的目录下才能执行 docker comp
  • 数学建模笔记(三):数据预处理

    文章目录 前言 一 数据清洗 1 1 缺失值处理 1 2 异常值处理 二 数据变换 2 1 线性变换 2 2 向量规范化 2 3 min max归一化 2 4 z score标准化 三 数据预处理案例及代码实现 3 1 线性变换 代码实现
  • 【算法】算法学习四:图

    文章目录 一 什么是图 二 广度优先搜索 三 什么是队列 四 广度优先搜索的实现 4 1 实现全部的代码 4 2 队列的实现 五 深度优先搜索 六 图的运行时间 6 1 广度优先搜索 6 2 深度优先搜索 一 什么是图 在计算机科学中 图
  • Python静态方法和类方法的区别和应用(无师自通)

    实际上 Python 完全支持定义类方法 甚至支持定义静态方法 Python 的类方法和静态方法很相似 它们都推荐使用类来调用 其实也可使用对象来调用 类方法和静态方法的区别在于 Python会自动绑定类方法的第一个参数 类方法的第一个参数
  • 禅道后台命令执行漏洞二

    漏洞简介 禅道是第一款国产的开源项目管理软件 它集产品管理 项目管理 质量管理 文档管理 组织管理和事务管理于一体 是一款专业的研发项目管理软件 完整地覆盖了项目管理的核心流程 禅道管理思想注重实效 功能完备丰富 操作简洁高效 界面美观大方
  • vi编辑器的使用

    一 实验目的 理解vi的的三种运行模式及其切换方法 学会使用vi的各种操作命令进行文本文件编辑 用vi编写Linux下C程序 会用gcc编译 二 实验环境 一台装有Linux的机器 系统里面有gcc编译 三 实验内容 1 不保存直接退出 1
  • tomcat配置域名及默认访问页面

    1 配置80端口 在tomcat的conf server xml文件中的
  • 三子棋的实现--二维数组的应用

    通过对数组 函数 循环知识的应用我们可以独立地创建一个项目 三子棋 首先我们对于三子棋的实现要有一个大概的思路和逻辑 文件的创建 工欲善其事必先利其器 为了更好地完成项目 先创建三个文件 两个源文件 一个头文件 测试文件 test c 游戏
  • 使用druid-spring-boot-starter配合sharding报错

    在使用springboot时 为了方便配置 一般会使用启动器 不用单独进行 Bean 今天在增加sharding时一直出现找不到mapper的异常 对mapper加注解 加扫描包都不行 后来将druid spring boot starte
  • 安装指定版本nodejs

    要在Linux上安装指定版本的Node js 您可以使用Node Version Manager NVM NVM是一个用于管理多个Node js版本的工具 它允许您在同一系统上安装和切换不同的Node js版本 以下是使用NVM在Linux
  • 数字电源核心理论-“伏妙平衡“与“安秒平衡“

    数字电源 数字电源核心理论 伏妙平衡 与 安秒平衡 最后一个bug 2020 10 14 22 54 16 341 收藏 3 文章标签 编程语言 xhtml xmpp jrebel dwr 版权 1 聊一聊 今天跟大家分享的是迈克在本公众号
  • es批量增删改

    批量增删改 bulk 操作将文档的增删改查一系列操作 通过以此请求全部做完 减少网络传输次数 POST bulk 注意 bulk操作的形式是多个json 每个json写完必须换行 而在json内则不可以换行 多个json之间操作互不影响 即
  • C++标准模板库(STL)

    C 标准模板库 STL vector Introduction vector 长度根据需要而自动改变的数组 定义 vector
  • Oracle数据库插入大量数据

    insert into table name select rownum from dual connect by level lt 100 以上命令向表中插入了数列1 2 3 100
  • 机器学习--决策树

    一 决策树简介 决策树 DecisionTree 又称为判定树 是另一种特殊的根树 它最初是运筹学中的常用工具之一 之后应用范围不断扩展 目前是人工智能中常见的机器学习方法之一 决策树是一种基于树结构来进行决策的分类算法 我们希望从给定的训

随机推荐

  • idea快捷键汇总mac_mac版本IDEA快捷键

    本文中的快捷键均为系统默认配置 一 mac系统键盘和符号对应关系 1 Control 或 Ctrl 2 Caps Lock 3 Command 或 Cmd 4 Option 或 Alt 5 Shift 二 mac系统自有快捷键 1 comm
  • 深入学习jquery源码之each()

    each 遍历一个数组或对象 可以是DOM json等格式 等价于for循环 返回值 jQuery each callback 参数 对于每个匹配的元素所要执行的函数 概述 以每一个匹配的元素作为上下文来执行一个函数 意味着 每次执行传递进
  • java JDBC连接数据库代码大全

    使用JDBC操作数据库 1 JDBC基础 JDBC简介 JDBC Java Database Connectivity 是一种可以执行SQL的Java API 通过它可以用一种API操作不同的数据库 JDBC驱动 不同数据库间 标准的SQL
  • 关于Linux下ISE和vivado安装cable usb驱动的问题

    由于先前安装Android Studio一直不成功 一气之下 本人重装了系统 导致之前装的驱动什么的都没有了 这时再安装vivado 检测不到驱动 这里介绍怎么安装cable usb的驱动 供参考 要安装这个驱动 我之前是安装了ISE 然后
  • 内存超频时序怎么调_最高4133MHz,光威血影DDR4内存B550平台超频指南

    Zen1 Zen 和Zen2超频内存时 一般是用Thaiphoon搭配DRAM Calculator for Ryzen自动计算时序 电压等参数 Zen3还没获得DRAM Calculator for Ryzen支持 超频内存得手动调节 近
  • 你知道什么是DBA吗?

    数据库管理员 英文是Database Administrator 简称DBA 这个职位对不同的人意味着不同的意义 一个小的软件开发工作室和一个分工高度明细的大公司相比 DBA的职责来得更加宽泛一些 一个公司 不管它是自己开发应用软件 还是购
  • ROS2与ROS1对比

    提示 ROS初学小白 文章目录 前言 一 ROS1与ROS2对比 二 ROS1创建工作空间 2 1 创建工作空间 Creat ROS Working Paths 2 2 用VScode打开 Start VScode 2 3 创建功能包 Cr
  • org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 1 i

    出现的原因是maven内置1 6版本的tomcat 无法把编译jsp 所以把tomcat版本改成高版本1 7 maven没有实现1 8插件 如果改成1 8会报错
  • Redis基础【完整版】:简介和常用命令、全面key操作、五种数据类型的增删改查、Redis与Python交互(附源代码)

    目录 一 Redis简介和常用命令 1 Reids简介 2 redis常用命令 进入redis 查看数据库版本 切换数据库 退出redis 二 全面key操作 1 查看当前数据有哪些键 2 创建数据 3 获取数据 4 获取数据如果显示是十六
  • 内核源代码的阅读

    在学习内核的过程中难免遇到很多问题 阅读源代码是一种非常直接的方式 通过在线源码阅读网站 bootlin 可以方便地在C代码的符号间跳转 但是随着源码中宏的大量使用 跳转功能也显得力不从心了 除此之外 网站的代码显示主题是普通文本主题 不太
  • 红队隧道应用篇之Frp内网穿透(十)

    简介 Frp工具下载地址 https github com fatedier frp releases Frp可将处于防火墙或内网后的主机对外网提供http https tcp或udp等服务 例如在虚拟机做个frp内网穿透 在其他主机访问其
  • android gpuimage显示的缩放和剪裁模式

    原文 http blog csdn net u011270282 article details 51505755 在gpuimagerender里面有如下方法 GPUImage ScaleType CENTER CROP表示剪裁 可以修改
  • python二级题库 第四套 附刷题软件

    刷 题软件 模拟python二级考试 操作题刷题软件 公众h 露露IT 回复 python二级 一 选择题 1 描述数据库系统中全局数据逻辑结构 且为全体用户公共数据视图的是 A 概念模式 B 外模式 C 内模式 D 中间模式 解析 本题考
  • 使用yt_dlp下载油管视频

    yt dlp工具是一个开源的项目 项目地址 https github com yt dlp yt dlp 下载地址 https github com yt dlp yt dlp releases 查看支持的下载格式 yt dlp F htt
  • ztree中获取某节点的所有叶子节点

    var setting data simpleData enable true callback onClick treenodeClick function treenodeClick event treeId treeNode clic
  • vue数据双向绑定模型

    记录vue的数据双向绑定模型的常见的问题
  • 英文输入法

    注意 答案仅作为参考 实际考试中下列代码通过用例100 但不代表最优解 主管期望你来实现英文输入法单词联想功能 需求如下 依据用户输入的单词前缀 从已输入的英文语句中联想出用户想输入的单词 按字典序输出联想到的单词序列 如果联想不到 请输出
  • 微软 Office 中的零日漏洞: “ Follina”将在宏被禁用时工作

    信息安全网的研究人员在微软无处不在的 Office 软件中发现了一个零日代码执行漏洞 这个被称为 Follina 的漏洞已经流传了一段时间 网络安全研究员 Kevin Beaumont 追溯到4月12日微软的一份报告 并使用 Office
  • 深入理解Java虚拟机jvm-永久代(Permanent Generation)

    永久代 jdk6及以前 jdk7 jdk8 方法区 Method Area 与Java堆一样 是各个线程共享的内存区域 它用于存储已被虚拟机加载的类型信息 常量 静态变量 即时编译器编译后的代码缓存等数据 它和堆在逻辑上是连续的 但在物理上
  • Kubernetes (k8s) v1.19.0 安装部署,单机部署

    系统准备 环境准备 部署集群没有特殊说明均使用root用户执行命令 硬件信息 k8s master 内存16GB 硬盘20GB k8s 控制节点 Node节点 软件信息 CentOS Linux release 7 6 1810 Core