k8s
k8s
1. k8s基础-基本概念
1.1 为什么要用k8s
裸容器存在的问题:
- 宿主机宕机无法恢复
- 程序级健康检查依旧不到位
- 程序的扩容、部署、回滚和更新依旧不够灵活
- 端口问题并未得到解决
容器编排的优点:
- 轻松管理成千上万的业务容器
- 全自动容灾机制
- 全自动扩缩容、回滚
- 原生支持服务发现和负载均衡
- 更加灵活方便的健康检查
1.2 k8s架构剖析
kubernetes是谷歌开发的第三个容器管理系统,提供了资源调度、扩容缩容、服务发现、存储编排、自动部署和回滚,并且具有天生高可用、负载均衡、故障自动恢复等功能的“生态系统”,目前已成为云原生领域的标准。
1.3 控制节点组件介绍
1.4 Scheduler和Controller是有状态的组件
apiserver是没有状态的组件
Scheduler和Controller是有状态的组件,所以说Scheduler和Controller会有选主的机制,不管Scheduler和Controller有几个节点,但只有一个节点在工作
-
k8s版本在1.20以下,会在kubectl get ep Scheduler/Controller -n kube-system -oyaml metadata.annotations保存主节点信息
-
k8s版本在1.20以上
kubectl get leases -n kube-system
1.5 工作节点组件介绍
coredns会给每一个pod中的 /etc/resolv.conf 中注入一条 nameserver [coredns的地址]
1.6 什么是pod
containerd是具有命名空间隔离性的
查询k8s的容器要指定命名空间 k8s.io
ctr -n k8s.io c ls
1.7 为什么要引入pod
- 强依赖的服务需要部署到一起
- 多个服务需要协同工作
- 兼容其他CRI标准的运行时
1.8 定义一个pod
kubectl run nginx-run --image=registry.cn-beijing.aliyuncs.com/k8s-study-test/nginx:1.15.2
我们用命令生成yaml文件,--dry-run=client意思是将数据发给apiserver但是不持久化数据
[root@k8s-master01 pra]# cat pod.yaml
apiVersion: v1 # apiVersion版本号
kind: Pod # 资源的类型
metadata: # 元数据信息
labels: # 标签
run: nginx1
name: nginx1 # pod的名称
spec: # 定义pod
containers: # 配置容器的地方,可以配置多个
- image: registry.cn-beijing.aliyuncs.com/k8s-study-test/nginx:1.15.2
name: nginx1
api版本查看方式
kubectl api-resources
[root@k8s-master01 pra]# kubectl explain pod
[root@k8s-master01 pra]# kubectl explain pod.spec
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现