[云原生]三、Kubernetes(1.18)

news2024/9/21 16:21:21

主要内容:

1、kubernetes 简介
2、kubernetes 集群搭建
         方式搭建
         二进制方式搭建
3、 kubeadm kubernetes 核心技术
         YAML 文件详解
         kubectl 命令工具
         Pod
         Label
         Controller 控制器
         Volume
         PVC 和 PV
         Secret 和 configMap
         Namespace
         Service
         探针
         调度器
         集群安装机制 RBAC
         Helm
4、部署性能监控平台
5、搭建 kubernetes 高可用集群
6、kubernetes 部署项目
         Kubernete平台部署Java项目

1. kubernetes 简介

1.1 kubernetes 基本介绍

        kubernetes,简称 K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
        传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
        新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署, 由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
        容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在 build 或 release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”, 这更便于监控和管理。
        Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。在 Kubernetes 中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的 管理、发现、访问 ,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

1.2 kubernetes 功能和架构

1.2.1 概述

        Kubernetes 是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes 能够进行应用的自动化部署和扩缩容。在 Kubernetes 中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes 积累了作为 Google 生产环境运行工作负载 10 多年的经验,并吸收了来自于社区的最佳想法和实践。

1.2.2 K8s 功能:

(1)自动装箱
        基于容器对应用运行环境的资源配置要求自动部署应用容器
(2)自我修复(自愈能力)
        当容器失败时,会对容器进行重启
        当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
(3)水平扩展
        通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大或规模剪裁
(3)服务发现
        用户不需使用额外的服务发现机制,就能够基于 Kubernetes 自身能力实现服务发现和负载均衡
(4)滚动更新
        可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
(5)版本回退
        可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
(6)密钥和配置管理
        在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
(7)存储编排
        自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务
(8)批处理
        提供一次性任务,定时任务;满足批量数据处理和分析的场景

1.2.3 应用部署架构分类

(1) 无中心节点架构
        GlusterFS
(2) 有中心节点架构
        HDFS
        K8S

1.2.4 k8s 集群架构

1.2.5 k8s 集群架构节点角色功能

Master Node
        k8s 集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
        Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和
Controller MangerServer 所组成
Worker Node
        集群工作节点,运行用户业务应用容器;
        Worker Node 包含 kubelet、kube proxy 和 ContainerRuntime;
       

2. kubernetes 集群搭建

2.1 K8S集群搭建 -- kubeadm方式

2.1.1 前置知识点

目前生产部署 Kubernetes 集群主要有两种方式:
(1)kubeadm
        Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。
        官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
(2)二进制包
        从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署 Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。

2.1.2 kubeadm 部署方式介绍

        kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具,这个工具能通过两条指令完成一个 kubernetes 集群的部署:
        第一、创建一个 Master 节点 kubeadm init
        第二, 将 Node 节点加入到当前集群中 $ kubeadm join <Master 节点的 IP 和端口 >

2.1.3 安装要求

在开始之前,部署 Kubernetes 集群机器需要满足以下几个条件:
        - 一台或多台机器,操作系统 CentOS7.x-86_x64
        - 硬件配置:2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多
        - 集群中所有机器之间网络互通
        - 可以访问外网,需要拉取镜像
        - 禁止 swap 分区

2.1.4 最终目标

(1)在所有节点上安装 Docker 和 kubeadm
(2)部署 Kubernetes Master
(3)部署容器网络插件
(4)部署 Kubernetes Node,将节点加入 Kubernetes 集群中
(5)部署 Dashboard Web 页面,可视化查看 Kubernetes 资源
        

2.1.5 准备环境

2.1.6 系统初始化

 1. 关闭防火墙
$ systemctl stop firewalld
$ systemctl disable firewalld
2. 关闭 selinux:
$ sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
$ setenforce 0 # 临时
可以使用以下命令来检查当前系统中 SELinux 的状态是否开启:
```bash
sestatus
```
通过运行上述命令,您将能够查看 SELinux 的当前状态,
包括是否为 enforcing(强制执行)、permissive(宽容)或 disabled(禁用)。
3. 关闭 swap:
$ swapoff -a # 临时
$ vim /etc/fstab # 永久
$ swapon # 开启
$ swapon --show  查看

4. 修改主机名:
$ hostnamectl set-hostname <hostname>
或者
$ vim /etc/hostname
5. 在 master 添加 hosts:
$ cat >> /etc/hosts << EOF
192.168.31.61 k8s-master
192.168.31.62 k8s-node1
192.168.31.63 k8s-node2
EOF
6. 将桥接的 IPv4 流量传递到 iptables 的链:
$ cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
$ sysctl --system  生效


这段配置主要用于配置网络桥的网络过滤功能,对于 Kubernetes 等容器化平台来说是必要的设置。具体来说,这段配置指定了两个参数:

1. `net.bridge.bridge-nf-call-ip6tables = 1`:这个参数指示内核在桥接网络数据包到 IPv6 地址时,调用 IP6tables 进行数据包过滤。
2. `net.bridge.bridge-nf-call-iptables = 1`:这个参数指示内核在桥接网络数据包到 IPv4 地址时,调用 iptables 进行数据包过滤。
这些参数的设置对于 Kubernetes 等容器平台非常重要,以确保网络的正确和安全运行。通过将这些参数设置为1,可以确保桥接网络数据包按照规则进行过滤,以帮助保护容器网络的安全性和稳定性。

在设置完成后,通过运行 `sysctl --system` 命令可以使这些配置立即生效。这样一来,你的系统就会按照配置中指定的参数来处理桥接网络数据包的过滤。

这些配置参数的含义是:

  1. net.bridge.bridge-nf-call-ip6tables = 1:当通过桥接网络接收到IPv6数据包时,将调用ip6tables的规则进行处理。
  2. net.bridge.bridge-nf-call-iptables = 1:当通过桥接网络接收到IPv4数据包时,将调用iptables的规则进行处理。
  3. net.ipv4.ip_forward = 1:允许IPv4的数据包转发,即使数据包的目标不是本机。
  4. vm.swappiness = 0: vm.swappiness是操作系统控制物理内存交换出去的策略。它允许的值是一个百分比的值,最小为0,最大运行100,该值默认为60。vm.swappiness设置为0表示尽量少swap,100表示尽量将inactive的内存页交换出去。

        Kubernetes通过iptables实现服务发现和网络流量路由,pod通信。这一步很重要。没有设置的话会导致集群网络通信故障,如pod无法通信。

7. 时间同步:
$ yum install ntpdate -y
$ ntpdate time.windows.com

使用以前请先ping相应的域名查看网络是否可达,和相应的访问速度
ntp.ntsc.ac.cn   中国国家授时中心
cn.ntp.org.cn    中国授时

阿里云NTP时间源服务器
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com

国内一些大学NTP时间源服务器
s1a.time.edu.cn   北京邮电大学
s1b.time.edu.cn   清华大学
s1c.time.edu.cn   北京大学
s1d.time.edu.cn   东南大学
s1e.time.edu.cn   清华大学
s2a.time.edu.cn   清华大学
s2b.time.edu.cn   清华大学
s2c.time.edu.cn   北京邮电大学
s2d.time.edu.cn   西南地区网络中心
s2e.time.edu.cn   西北地区网络中心
s2f.time.edu.cn   东北地区网络中心
s2g.time.edu.cn   华东南地区网络中心
s2h.time.edu.cn   四川大学网络管理中心
s2j.time.edu.cn   大连理工大学网络中心
s2k.time.edu.cn   CERNET桂林主节点
s2m.time.edu.cn   北京大学

另外,如果服务器在国外,苹果提供的公共NTP服务,以下7个域名
http://time1.apple.com
http://time2.apple.com
http://time3.apple.com
http://time4.apple.com
http://time5.apple.com
http://time6.apple.com
http://time7.apple.com

Google(谷歌)提供的NTP服务,以下4个域名
http://time1.google.com
http://time2.google.com
http://time3.google.com
http://time4.google.com

2.1.7 所有节点安装 Docker/kubeadm/kubelet

阿里云教程:

kubernetes镜像_kubernetes下载地址_kubernetes安装教程-阿里巴巴开源镜像站 (aliyun.com)

Kubernetes 默认 CRI(容器运行时)为 Docker,因此先安装 Docker。
(1)安装 Docker
# 移除旧版本docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-eng

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node.js使用NodeMachineID 生成唯一UUID和注意事项

node-machine-id用于获取或生成唯一的机器ID 如何使用 const { machineId, machineIdSync } require(node-machine-id) JSON.stringify(machineIdSync({original: true})) ;方法&#xff1a; machineIdSync 此函数同步获取操作系统本机UUID/GUID&#xff0c;默认情况下进行哈…

深入理解 ReLU 激活函数及其在深度学习中的应用【激活函数、Sigmoid、Tanh】

ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数 ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数是一种广泛应用于神经网络中的非线性激活函数。其公式如下&#xff1a; ReLU ( x ) max ⁡ ( 0 , x ) \text{ReLU}(x) \max(0, x) ReLU(x)max(0,x) 在…

嵌入式Linux系统中pinictrl框架基本实现

1. 回顾Pinctrl的三大作用 记住pinctrl的三大作用,有助于理解所涉及的数据结构: * 引脚枚举与命名(Enumerating and naming) * 单个引脚 * 各组引脚 * 引脚复用(Multiplexing):比如用作GPIO、I2C或其他功能 * 引脚配置(Configuration):比如上拉、下拉、open drain、驱…

Java中的五种线程池类型

Java中的五种线程池类型 1. CachedThreadPool &#xff08;有缓冲的线程池&#xff09;2. FixedThreadPool &#xff08;固定大小的线程池&#xff09;3. ScheduledThreadPool&#xff08;计划线程池&#xff09;4. SingleThreadExecutor &#xff08;单线程线程池&#xff09…

CTFHUB-SSRF-DNS重绑定 Bypass

开启题目&#xff0c;页面空白&#xff0c;访问附件 附件是一个知乎的文章&#xff0c;翻到下面点击文中这个链接 跳转之后&#xff0c;进行设置 把得到的链接拼接到题目的后面进行访问&#xff0c;然后得到了本题的 flag

Leetcode3226. 使两个整数相等的位更改次数

Every day a Leetcode 题目来源&#xff1a;3226. 使两个整数相等的位更改次数 解法1&#xff1a;位运算 从集合的角度理解&#xff0c;k 必须是 n 的子集。如果不是&#xff0c;返回 −1。怎么用位运算判断&#xff0c;见上面的文章链接。 如果 k 是 n 的子集&#xff0c;…

Windows Batch Linux Shell

windows上使用unix&#xff0c;Linux的unix工具对应的windows的可执行exe程序&#xff0c;对于本来的windows用户也可以使用这些工具提高工作效率&#xff0c;特别地在windows的批处理中使用这些命令很方便 二 工具列表 agrep.exe ansi2knr.exe basename.exe bc.exe bison.exe…

图像生成技术的颠覆性进展——从GAN到Aura SR V2

欢迎来到我们的科技专栏&#xff01;最近&#xff0c;文本到图像合成技术的成功引起了全球的轰动&#xff0c;激发了公众的无限想象力。从技术角度看&#xff0c;这也标志着在设计生成图像模型的架构上发生了巨大的变化。曾经&#xff0c;生成对抗网络&#xff08;GANs&#xf…

【Material-UI】详解安装指南

文章目录 一、默认安装1.1 Peer Dependencies 二、使用styled-components三、Roboto字体3.1 使用Fontsource3.2 使用Google Web Fonts 四、图标4.1 使用Google Web Fonts 五、CDN安装六、总结 Material-UI是全球最受欢迎的React UI框架之一。它提供了丰富的组件和高度可定制的主…

CSDN 的 Markdown 编辑器图片居中对齐和设置图片大小的方法

图片对齐方式 加在文件格式后面 #pic_center #pic_left #pic_right例如&#xff1a; 居中对齐 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eb16b0a5bc414b9888ab73f3c74a8acb.png#pic_center)左对齐 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direc…

AI答题应用平台相关面试题

目录 1、请介绍整个系统后端的架构设计&#xff0c;有哪些模块以及各模块之间的关系&#xff1f; 2、你在项目中是如何设计库表的&#xff1f;可以从字段、索引、关联等方面回答。 3、为什么使用策略模式来封装不同的应用评分算法&#xff1f;它有哪些好处&#xff1f;具体如…

Elasticsearch 的DSL查询,聚合查询与多维度数据统计

文章目录 搜索聚合高阶概念 搜索 即从一个索引下按照特定的字段或关键词搜索出符合用户预期的一个或者一堆cocument&#xff0c;然后根据文档的相关度得分&#xff0c;在返回的结果集里并根据得分对这些文档进行一定的排序。 聚合 根据业务需求&#xff0c;对文档中的某个或…

【源码+文档+调试讲解】营业厅宽带系统设计与实现

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本营业厅宽带系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

Action部署在线上写文章

原文&#xff1a;https://blog.c12th.cn/archives/32.html 前言 之前分别出了 Hexo 和 Hugo 的 Action搭建教程&#xff0c;相当于伪动态&#xff0c;可以在线上写文章了&#xff1b;不过对于喜欢魔改的同学就不太友好了qwq 教程 github.dev 确保在配置过程中能访问Github &…

学工系统学生家庭情况登记功能概述

智慧校园学工系统中的“学生家庭情况”模块主要用于收集和管理学生的家庭背景信息&#xff0c;以便学校更好地了解学生的情况&#xff0c;并据此提供相应的支持和服务。该模块通常包括以下几个方面&#xff1a; 基本信息录入&#xff1a;支持录入学生的家庭成员信息&#xff0c…

ocaml精解【1】

文章目录 概述简介一、基本概述二、开发工具三、语言特性四、应用场景五、未来展望 windows下安装基础 参考文献 概述 简介 OCaml&#xff08;Objective Caml&#xff09;是Caml编程语言的主要实现&#xff0c;由Xavier Leroy、Jrme Vouillon、Damien Doligez、Didier Rmy等人…

一款免费强大的电脑锁屏工具,中文绿色免安装

这款软件主要特点是锁屏后不显示密码输入框&#xff0c;直接输入密码即可解锁。 ScreenBlur是一款功能强大的电脑屏幕锁软件&#xff0c;主要用于保护用户的隐私和数据安全。该软件的主要功能包括自动锁屏、隐藏桌面、加密锁机等。 功能特点 自动锁屏&#xff1a;用户可以设…

C语言之unsigned long long与struct相互转换实例(五十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

数学希腊符号

1、Α α alpha /a:lf/ 阿尔法 2、Β β beta /bet/ 贝塔 3、Γ γ gamma /ga:m/ 伽马 4、Δ δ delta /delt/ 德尔塔 5、Ε ε epsilon /epsilon/ 伊普西龙 6、Ζ ζ zeta /zat/ 截塔 7、Η η eta /eit/ 艾塔 8、Θ θ thet /θit/ 西塔 9、Ι ι iot /aiot/ 约塔 10、Κ κ …

ADHD儿童康复的灯塔,专业与爱共筑希望之桥

在自闭症及注意缺陷多动障碍&#xff08;ADHD&#xff09;儿童教育领域&#xff0c;专业的康复学校扮演着至关重要的角色。这些学校不仅为孩子们提供科学的康复训练&#xff0c;还致力于帮助他们融入社会&#xff0c;实现自我价值。 以星启帆自闭症儿童康复机构为例&#xff0c…