K8S二进制安装报错及各个组件功能介绍

news2024/11/24 10:30:17

目录

    • 一、K8S安装
    • 二、安装时遇到的几个问题
      • 2.1、Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes
      • 2.2、No resources found
      • 2.3、端口配置错误
      • 2.4、kubectl get node状态NotReady
    • 三、K8S组件介绍
      • 3.1 kube-apiserver
      • 3.2 etcd
      • 3.3 kube-scheduler
      • 3.4 kube-controller-manager
      • 3.5 cloud-controller-manager
      • 3.6 kubelet
      • 3.7 kube-proxy
      • 3.8 容器运行时(Container Runtime)
      • 3.9 CoreDNS
      • 3.10 Dashboard


一、K8S安装

二进制安装K8S集群-上
二进制安装K8S集群-下

二、安装时遇到的几个问题

2.1、Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of “crypto/rsa: verification error” while trying to verify candidate authority certificate "kubernetes

[root@k8s-master01 ~]# kubectl get cs                 
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")

解决办法:

[root@k8s-master01 ~]# rm -rf .kube
[root@k8s-master01 ~]# mkdir -p /root/.kube ; cp /etc/kubernetes/admin.kubeconfig /root/.kube/config           #网上大部分都是走完以上2步即恢复正常,但本机安装中,走完这2步还是报错。
[root@k8s-master01 ~]# export KUBECONFIG=/etc/kubernetes/admin.kubeconfig              
[root@k8s-master01 ~]# kubectl get cs                        #再次输入后正常

2.2、No resources found

[root@k8s-master01 ~]# kubectl get node
No resources found

解决办法:

[root@k8s-master01  ~]# vim /usr/lib/systemd/system/kube-apiserver.service
      --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota  \                 #删除ServiceAccount
[root@k8s-master01  ~]# systemctl daemon-reload
[root@k8s-master01  ~]# systemctl restart kube-apiserver

2.3、端口配置错误

kubectl get cs
The connection to the server 192.168.1.10:16443 was refused - did you specify the right host or port?

解决办法:
kubectl config view查看节点配置,发现端口配置错误

kubectl config current-context #用于显示当前上下文
kubectl config delete-context X #删除指定上下文
vim /root/.kube/config       #修改到正确端口号

2.4、kubectl get node状态NotReady

安装好calico后恢复正常

三、K8S组件介绍

在这里插入图片描述
控制平面组件(Master节点)
控制平面组件会为集群做出全局决策,比如资源的调度。以及检测和响应集群事件。控制平面组件可以在集群中的任何节点上运行。但一般都是安装在master节点机器上。

3.1 kube-apiserver

提供其他模块之间的数据交互和通信的枢纽,其他模块通过API Server查询或修改数据,只有API Server才直接和etcd进行交互。
Kubernetes集群中,API Server扮演着通信枢纽的位置。API Server不仅负责和 etcd 交互,并且对外提供统一的API调用入口, 所有的交互都是以 API Server为核心的。

3.2 etcd

一致且高可用的键值存储,用作 Kubernetes所有集群数据的后台数据库。K8S中仅API Server具备读写权限,其他组件必须通过 API Server的接口才能读写数据。

3.3 kube-scheduler

kube-scheduler是控制平面的组件。负责资源调度的进程,根据调度算法为新创建的Pod选择一个合适的Node节点。可以理解成K8S所有node节点的调度器。当用户要部署服务时,Scheduler会根据调度算法选择最合适的Node 节点来部署Pod。

3.4 kube-controller-manager

kube-controller-manager 是控制平面的组件, 负责集群内 Node、Namespace、Service、Token、Replication 等资源对象的管理,使集群内的资源对象维持在预期的工作状态。
每一个 controller通过 api-server 提供的 restful 接口实时监控集群内每个资源对象的状态,当发生故障,导致资源对象的工作状态发生变化,就进行干预,尝试将资源对象从当前状态恢复为预期的工作状态。

3.5 cloud-controller-manager

一个 Kubernetes 控制平面组件,嵌入了特定于云平台的控制逻辑。云控制器管理器(Cloud Controller Manager)允许你将你的集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。
cloud-controller-manager 仅运行特定于云平台的控制器。 因此如果你在自己的环境中运行 Kubernetes,或者在本地计算机中运行学习环境, 所部署的集群不需要有云控制器管理器。
与 kube-controller-manager 类似,cloud-controller-manager 将若干逻辑上独立的控制回路组合到同一个可执行文件中, 供你以同一进程的方式运行。 你可以对其执行水平扩容(运行不止一个副本)以提升性能或者增强容错能力。
Node 组件(node节点)
节点组件会在每个节点上运行,负责维护运行的 Pod 并提供 Kubernetes 运行环境。

3.6 kubelet

kubelet 会在集群中每个节点上运行。它保证容器都运行在 Pod 中。
当scheduler确定pod运行在某个节点上时,会将pod的具体配置信息发送给节点的kubelet,kubelet会根据配置信息进行创建容器,并将容器运行结果报告给Master。另外,kubelet还会周期性的向Master报告pod以及node节点的运行状态。

3.7 kube-proxy

kube-proxy 是集群中每个节点(node)上所运行的网络代理,实现 Kubernetes 服务概念的一部分。
kube-proxy 维护节点上的一些网络规则, 这些网络规则会允许从集群内部或外部的网络会话与 Pod 进行网络通信。
总结来说kube-proxy实现的主要有几点作用:

实时watching Kubernetes kube-API ,获取建立Service的建立、升级信息,增加或者删除backend Pod 信息,来获取Pod 和 vip的映射关系;
维护本地Netfilter 、 iptables、 IPVS 内核组件;
通过修改和更新Netfilter,iptables,IPVS 规则,来实现数据报文的转发规则;
实现每个node上 clusertIP的发布和路由为维护;
构建路由信息,通过转发规则转发报文到VIPs对应的Pod。

iptables模式:
kube-proxy默认模式,当前模式下,kube-proxy监听service和endpoint的变化,当service创建时,kube-proxy在iptables中追加新的规则,对于service中的每一个endpoint,会在iptables中追加一条DNAT规则,将目的地址设置为真正提供服务的pod地址;再为service追加规则,设定动作为跳转到对应的endpoint规则上
ipvs模式:
ipvs在INPUT阶段也是基于netfilter的hook功能,与iptables类似。但是转发规则是通过工作在内核空间下的hash表作为存储的数据结构。在这种模式下,只需要通过ipset来验证具体的请求是否满足某条规则。当service变化时,只需要更新ipset记录,不需要改变iptables规则链,因此可以保证iptables中的规则不会根据service的创建越来越多。同时,ipvs的性能也高于iptables,因为当service变化时,ipvs只需要对特定的hash表进行更新,而iptables则需要更新整个规则表。

3.8 容器运行时(Container Runtime)

容器运行时是 Kubernetes 管理的应用程序的基础组件。容器运行时是一种用于执行应用程序和容器的软件,它提供了将应用程序和容器打包到独立环境中的能力,使它们可以在任何地方运行。
在 K8s 中,可用的容器运行时包括 Docker、Containerd、CRI-O 和其他一些软件。这些容器运行时具有不同的特性和优点,在选择容器运行时时需要考虑诸多因素,例如性能、可靠性、安全性和兼容性等。
容器运行时的功能非常丰富,包括容器的创建、启动和停止等基本操作,还包括对容器资源的限制和保护、容器的网络和存储配置、容器间的通信和数据共享等高级功能。通过使用容器运行时,K8s 可以实现快速且高效的应用程序部署和管理,同时也可以提供可靠和可扩展的基础设施环境。

3.9 CoreDNS

尽管其他插件都并非严格意义上的必需组件,但几乎所有 Kubernetes 集群都应该有集群 DNS, 因为很多示例都需要 DNS 服务。
集群 DNS 是一个 DNS 服务器,和环境中的其他 DNS 服务器一起工作,它为 Kubernetes 服务提供 DNS 记录。
Kubernetes 启动的容器自动将此 DNS 服务器包含在其 DNS 搜索列表中。

3.10 Dashboard

Dashboard是Kubernetes 集群的通用的、基于Web的用户界面。 它使用户可以管理集群中运行的应用程序以及集群本身, 并进行故障排除。
部署方式:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml #安装
kubectl proxy #启用Dashboard访问

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

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

相关文章

C语言复习笔记2

1.变量命名只能以数字、字母、下划线组成并且不能以数字开头。 #include<stdio.h> #include<unistd.h>//变量名只能由数字字母下划线组成&#xff0c;不能以数字开头 int main() {//int 2b;return 0; }2.内存中保存的是补码 0的补码取反得补码再求源码是-1。 源码…

提升论文影响力的方法

论文发表后&#xff0c;还有一些重要的工作去做&#xff0c;那就是去积极宣传和推广自己的论文&#xff0c;提高自己论文的影响力。这类似于一个电影上映后&#xff0c;主演们还得去做宣传一样&#xff0c;要想办法推销自己的作品。本文将介绍提升论文影响力的方法。 1. 开源数…

xray简单使用指南

前言收到需求如下 用户还需要一个报告 询问了群里的小伙伴推荐使用xray进行扫描 一、下载 https://github.com/chaitin/xray/releases windows下载amd64即可 解压后进入其目录下执行exe程序&#xff0c;帮我们生成一些yaml文件 生成 ca 证书 .\xray_windows_amd64.exe g…

创客匠人:五月,爱成长的力量,有爱必赢

2023年5月4日&#xff0c;创客匠人第六十九届铁军训练营在厦门举办&#xff0c;由创客匠人CEO蒋洪波、CSO张潇峰及HRM何巧婷为厦门总部的伙伴们带来精彩的回顾总结及主题分享。 一、四月总结 为了明确前进奋斗的方向&#xff0c;进一步提升团队战斗力&#xff0c;从而更好地帮助…

Altium Designer中如何在顶层中添加对应端口

转载说明&#xff1a; 大众深度科普 https://jingyan.baidu.com/article/c33e3f4889f327ea15cbb584.html 版权归原作者所有&#xff1b;感谢原作者的分享&#xff1b; 转载到此&#xff0c;主要为了后期查看方便&#xff1b; 本经验简要介绍Altium Designer中如何在顶层中添…

SpringBoot【开发实用篇】---- 热部署

SpringBoot【开发实用篇】---- 热部署 1. 手动启动热部署2. 自动启动热部署3. 参与热部署监控的文件范围配置4. 关闭热部署 什么是热部署&#xff1f;简单说就是你程序改了&#xff0c;现在要重新启动服务器&#xff0c;嫌麻烦&#xff1f;不用重启&#xff0c;服务器会自己悄悄…

人类创新发展的四个阶段:三个核心和一个扩展

纵观人类的发展史&#xff0c;始终伴随着人类的创新过程&#xff0c;这也是人类与其他生物体的最大的区别&#xff0c;别的生物体也就是可以使用工具或者模仿别的生物的动作来制造简单的工具&#xff0c;对工具进行简单的拼接&#xff0c;只有人类是可以进行真正的创造出这个自…

记录-Symbol学习笔记

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 Symbol是JavaScript中的原始数据类型之一&#xff0c;它表示一个唯一的、不可变的值&#xff0c;通常用作对象属性的键值。由于Symbol值是唯一的&#xff0c;因此可以防止对象属性被意外地覆盖或修改。…

Word下划线怎么打?速速get这5个实用方法!

案例&#xff1a;Word下划线怎么打&#xff1f; 【朋友们&#xff0c;最近在写毕业论文&#xff0c;封面文字的下划线打了好久都打不出来&#xff0c;请问大家Word下划线是怎么打的呀&#xff1f;】 在Microsoft Word中&#xff0c;打下划线是一种常见的操作&#xff0c;它可…

Python小姿势 - ## Python与数据库

Python与数据库 简介 当今&#xff0c;数据库是计算机应用中最重要的部分。几乎所有的大型应用都要用到数据库&#xff0c;比如银行、电商、航空、政府、医疗、教育、科研等。数据库的目的是存储数据&#xff0c;并且能够根据用户的需求提供数据。 数据库管理系统&#xff08;D…

QQ音乐银河音效技术实践——音乐重放效果的补偿与修饰

音效渲染是音频或音乐播放器最为重要的后处理模块之一。LiveVideoStackCon 2022 北京站邀请到腾讯音乐银河音效开发负责人——闫震海&#xff0c;为大家介绍银河音效在QQ音乐播放器中的创新应用&#xff0c;包括空间环绕效果和音效制作工具等内容。 文/闫震海 编辑/LiveVideoSt…

取代你的可能不是AI,而是比你更会使用AI的人

1、背景 从开始了解AI到现在已经1个月了&#xff0c;最明显的就是&#xff0c;产品层出不穷&#xff0c;以前只有技术人员才关系AI&#xff0c;现在各行各业都在关系AI&#xff0c;都希望通过它提高生产力和创造力&#xff1b; 在当今大数据和人工智能时代&#xff0c;职场和企…

MySQL基础(一)数据库概述

1. 为什么要使用数据库 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c;数据持久化意味着将内存中的数据保存到硬盘上加以”固化”&#xff0c;而持久化的实现过程大多通过各种关系数据库…

Linux网络基础-2

在之前的网络基础博客中&#xff0c;我们对网络的基本概念进行了一个简单的介绍&#xff0c;那么接下来的网络内容中&#xff0c;我们将对网络通信中的典型协议进行详细解释。 我们根据网络协议中的分层来对典型协议进行注意介绍&#xff0c;不过对于物理层的传输我们不做考究…

docker安装mongodb出现bash: mongo: command not found

安装MongoDB容器 -e MONGO_INITDB_ROOT_USERNAME创建管理员账号 -e MONGO_INITDB_ROOT_PASSWORD123456创建密码 映射容器服务的 27017 端口到宿主机的 27017 端口 docker run -d -p 27017:27017 --name mongodb -e MONGO_INITDB_ROOT_USERNAMEadmin -e MONGO_INITDB_ROOT_PAS…

简单分享微信里怎么添加投票活动

今天小编要分享是投票活动&#xff0c;怎么做投票活动&#xff0c;首先要做投票活动是需要用到第三方平台&#xff0c;这样我们才可以快速的制作出投票活动链接&#xff0c;其次我们是在微信小程序上添加投票活动的话&#xff0c;我们需要有微信小程序平台&#xff0c;然后把二…

数字信号处理2:频率

频率这个东西&#xff0c;说实话&#xff0c;我记得好像是初中还是小学的时候&#xff0c;刚接触三角函数的时候老师就已经开始给我们教频率了&#xff0c;但是&#xff0c;因为一直没有碰过信号&#xff0c;所以对频率也就没怎么关注过。 频率就是周期的倒数&#xff0c;这是…

Centos7 DolphinScheduler集群部署

DolphinScheduler集群部署 1 DolphinScheduler集群部署1.1 DolphinScheduler简介1.2 集群规划1.3 前置准备工作1.4 DolphinScheduler集群部署1.4.1 解压DolphinScheduler安装包1.4.2 创建元数据库及用户1.4.3 配置一键部署脚本1.4.4 初始化数据库1.4.5 配置部署用户免密及权限1…

中国网络安全人才需求

如果你是一个想要入门网络安全行业的小白、如果你是网络安全专业在读的大学生、如果你是正在找工作的新手&#xff0c;那么这篇文章你一定要仔细看。毕竟知己知彼百战百胜&#xff0c;知道行业的人才需求才能更好得发挥自己的优势。 当你打开BOSS直聘、拉钩等招聘网站&#xf…

打动人心的故事 | 如何利用文案在Facebook上塑造品牌形象

在当今的数字营销时代&#xff0c;文案已经成为各大平台上不可或缺的元素之一。在Facebook上&#xff0c;一个好的文案能够为品牌带来巨大的曝光率和用户黏性&#xff0c;甚至可以改变用户对品牌的看法。那么&#xff0c;如何利用文案在Facebook上打动人心&#xff0c;塑造品牌…