Kubernetes入门详解

目录

前言

一、Kubernetes

1、为什么要有K8s

2、什么是K8s

3、K8s的用途

4、K8s优势和特点

4.1  K8s优势

4.2  K8s特点

二、K8s架构

三、K8s组件简介 

1、master组件

1.1  kube-apiserver

1.2  kube-scheduler

1.3  kube-controller-manager

1.4  etcd

2、node组件

2.1  kubelet

2.2  kube-proxy

3、插件简介

3.1  DNS

3.2  dashboard

3.3  容器资源监控

3.4  集群层面日志

总结


前言

本文介绍K8s的相关概念,初步了解K8s,对它的组件相关概念能理解透彻。

一、Kubernetes

1、为什么要有K8s

在看这段文字之前,我们要首先知道一个东西,那就是docker。
这里再简单的说下:
docker是容器技术的一种实现方案,同时docker也是docker公司的一个产品。目前主流的容器技术是以docker技术为标准之上的。使用docker可以无需考虑环境问题,docker可以一次构建,到处运行。

如果有很多容器需要管理,单纯使用docker命令来手动管理容器就会显得非常的麻烦,并且容易出错。docker公司提供了docker-compose和内置docker中的docker-swarm来编排服务。使用docker公司提供的编排工具对于中小项目实际上已经足够,但是对于大型分布式应用而言,仅仅对容器编排是不够的。我们需要更强大的功能来管理容器,并且除了docker这个容器实现技术之外的其他容器也是需要编排管理。这是基于docker自身提供的工具就有些力不从心了,而我们又不想自己动手开发。有没有其他容器编排工具呢?肯定有的,容器编排的工具有很多,这里面也有一些公司的开源与兴衰,以及编排容器的工具更迭,好多人都想做那个独角兽,那么选择哪个作为我们使用的工具呢?这里就说这么一个,那就是Kubernetes(K8S)了。

那为什么说这个而不用其他的呢?
这里说以下几点:
开源,背后有谷歌基金会支持;
社区活跃,中英文都有;
成熟。
PS:K8s中文社区 https://www.kubernetes.org.cn/

2、什么是K8s

k8s是 Kubernetes的简称,是一个编排容器的工具,也是管理应用的全生命周期的一个工具。
不论是从应用的创建,应用的部署,应用提供服务,扩容缩容应用,还是应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。

3、K8s的用途

  • 存储系统挂载
  • Distributing secrets
  • 应用健康检测
  • 应用实例的复制
  • Pod自动伸缩/扩展
  • Naming and discovering
  • 负载均衡
  • 滚动更新
  • 资源监控
  • 日志访问
  • 调度应用程序
  • 提供认证和授权

4、K8s优势和特点

4.1  K8s优势

自动装箱,水平扩展,自我修复
服务发现和负载均衡
自动发布和回滚
集中化配置管理和密钥管理
存储编排
批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景

4.2  K8s特点

可移植:支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展:可根据业务流量情况快速扩展kubernetes集群的节点数量。
自愈:自动发布,自动重启,自动复制,自动扩展
进程协同:利用复合应用保证应用和容器一对一的模型。

二、K8s架构

集群架构图

一个简单架构图,不含dashboard,只有一个master和两个node

三、K8s组件简介 

1、master组件

1.1  kube-apiserver

功能:

1)提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);
2)提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd);
3)是资源配额控制的入口;

 如何访问apiserver

k8s通过kube-apiserver这个进程提供服务,该进程运行在单个k8s-master节点上。默认有两个端口。 

本地端口

1)该端口用于接收HTTP请求;
2)该端口默认值为8080,可以通过API Server的启动参数“–insecure-port”的值来修改默认值;
3)默认的IP地址为“localhost”,可以通过启动参数“–insecure-bind-address”的值来修改该IP地址;
4)非认证或授权的HTTP请求通过该端口访问API Server。 

安全端口

 1)该端口默认值为6443,可通过启动参数“–secure-port”的值来修改默认值;
2)默认IP地址为非本地(Non-Localhost)网络端口,通过启动参数“–bind-address”设置该值;
3)该端口用于接收HTTPS请求;
4)用于基于Tocken文件或客户端证书及HTTP Base的认证;
5)用于基于策略的授权;
6)默认不启动HTTPS安全访问控制。

访问apiserver的方式

curl :

curl localhost:8080/api
curl localhost:8080/api/v1/pods
curl localhost:8080/api/v1/services
curl localhost:8080/api/v1/replicationcontrollers

kubectl proxy

Kubectl Proxy代理程序既能作为API Server的反向代理,也能作为普通客户端访问API Server的代理。通过master节点的8080端口来启动该代理程序。

kubectl客户端

命令行工具kubectl客户端,通过命令行参数转换为对API Server的REST API调用,并将调用结果输出。

apiserver参数介绍

参数 含义   默认值
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值