什么是k8s?一文弄懂

1.什么是k8s

1.1 项目部署方式的进化和 k8s 的出现

  • 首先最早的传统部署方式可以理解为将若干应用(可以理解成Java中的若干微服务)打成 jar 包或者是 war 包以后,通过 tomcat 等容器运行到服务器上,这种传统的方式适合于小型项目,尤其是单体应用,应用过多的话,一个应用的内存溢出可能就会导致整个服务器上的应用全部宕机。

  • 再之后为了解决上述提到的内存溢出问题使用服务器上开多个虚拟机来隔离应用的方式,一台虚拟机负责一个应用,如此一来从物理级别将各个应用的内存隔离开来。不过,在服务器上开虚拟机的方式显然是一种重量级的方式,一个个的虚拟机显得格外笨重。

  • 综合了前两种方式的不足,基于容器的部署方式应运而生,首先,它通过容器化的方式将各个应用隔离开来,不会因为一个应用的内存溢出影响到别的应用,其次,容器化的方式是轻量级的,一个容器就好比一个纯净的 Linux 服务器,内部只有被部署的应用也就不存在环境的相互干扰以及笨重的体积。

基于容器化的部署方式已经成为主流,但工业界一个成熟的项目可能需要成百上千的应用来支撑,如此一来,大量分布在不同服务器上的容器就靠人工就非常难以管理,而 Kubernetes 的出现就是为了解决这个问题,它将大量的容器编排管理起来。

1.2 K8s 特性

  1. 服务发现与负载均衡:这点类似于 Nacos 等注册中心,同一个应用可能在不同的容器,各个容器又处于不同的服务器节点,K8s 能够将这些容器管理起来,请求来了以后能根据负载的情况将请求发送到具体的服务器。
  2. 存储编排:K8s 允许你自己来选择当前容器的存储空间大小,假如超过了这个空间它还能将这个容器杀死。
  3. 自动部署和回滚:自动的对容器进行部署,如果发生紧急事件,当前的新版本出现了生产事故并且当前来不及进行修复的话可以回滚到历史稳定版本。
  4. 自我修复:一个容器假如因其挂载的服务器出现问题而导致不能正常工作了,能够自动的将这个容器部署到别的健康的服务器。

2.架构

2.1 工作方式:

kubernetes cluster = N master node + N worker node:N个主节点 + N个工作节点;N >= 1。 这个集群方式和 Reids 这些类似,会有一个主节点起主要的发号施令的作用,若干个主节点又组成董事会,一旦主节点出现问题了就由其他的主节点通过投票的方式选举出新的发号施令的主节点。

2.2 集群中的各种角色

首先,将一个 K8s 比作一个集团,集团要做不同的项目,集群的各个角色就担任了不同的任务。

  1. Node:就是各个负责工作的地方也就是工厂。
  2. Kubelet:每一个工厂的负责人。
  3. k-proxy:每一个工厂的门卫,当总部的人要来巡视工厂了,可以通过它来询问当前的项目是不是在这开展,不管有没有在它这开展它都能告诉领导该去哪里查看。
  4. controller manager:决策者,决定项目由哪一个工厂来开展。
  5. API server:秘书部,决策者的决策不会直接告诉工厂而是通过它来进行转达,同样地,工厂的情况也是通过它来转给决策者。
  6. scheduler:调度者,调度项目的执行。
  7. etcd:资料库,用于存放集团的资料。

总结

1.每一个服务器中要有一个监工:kubelet,由它来负责监控整个服务器里面容器的监控状况2.所有的沟通都是通过秘书(api-server)3.所有的服务器都要装上运行时环境,可以是docker。4.可以通过命令的形式来进行部署

<think>我们之前详细描述了在CentOS上部署Kubernetes集群的步骤,包括系统配置、内核优化、安装容器运行时、安装Kubernetes组件、初始化集群等。因此,回答是:包括安装k8s。 但是,用户的问题只是询问“以上内容是否包括安装k8s?”,所以我们需要直接回答,然后根据规则提出相关问题。 注意:用户的问题很短,我们需要根据我们的回答(即确认包括安装k8s)来提出相关问题。 同时,我们之前提供的环境准备步骤中确实包含了安装k8s的完整过程。 因此,回答如下:</think>### 回答:是的,以上内容完整包含了在CentOS系统上安装Kubernetes集群的全部步骤。 #### 安装过程包含的关键环节: 1. **系统基础配置** - 防火墙/SELinux禁用 - Swap分区关闭 - 主机名解析设置 2. **内核优化** - 加载必要内核模块(br_netfilter, overlay) - 网络参数调优(IP转发、桥接流量) 3. **容器运行时安装** - Docker安装与配置(cgroup驱动、存储驱动) - 用户权限设置 4. **Kubernetes组件安装** ```bash sudo yum install -y kubelet kubeadm kubectl ``` - 核心三件套安装(kubelet, kubeadm, kubectl) - 系统服务启用 5. **集群初始化** ```bash sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` - 控制平面初始化 - kubeconfig配置 - CNI网络插件(Flannel)部署 6. **节点加入** ```bash sudo kubeadm join <master-ip>:6443 --token <token> ``` - 工作节点加入集群 7. **集群验证** - 节点状态检查(`kubectl get nodes`) - 测试部署(nginx创建与访问) 8. **私有仓库集成** - Docker registry密钥创建 - Deployment镜像拉取配置 #### 完整覆盖K8s安装生命周期: ```mermaid graph LR A[系统准备] --> B[容器运行时安装] B --> C[K8s组件安装] C --> D[控制平面初始化] D --> E[工作节点加入] E --> F[网络插件部署] F --> G[集群功能验证] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值