深入浅出Kubernetes:第一天学习指南

深入浅出Kubernetes:第一天学习指南

DescomplicandoKubernetes DescomplicandoKubernetes 项目地址: https://gitcode.com/gh_mirrors/de/DescomplicandoKubernetes

前言

Kubernetes作为当今最流行的容器编排平台,已经成为云原生技术栈的核心组件。本文将基于"DescomplicandoKubernetes"项目的第一天学习内容,系统性地介绍Kubernetes的基础知识,帮助初学者快速入门。

学习目标

在第一天的学习中,我们将重点掌握以下内容:

  1. 容器引擎和容器运行时的基本概念
  2. Kubernetes的核心架构和工作原理
  3. 本地Kubernetes集群的搭建方法
  4. 基本的Kubernetes操作实践

容器技术基础

容器引擎(Container Engine)

容器引擎是管理容器生命周期的重要组件,负责:

  • 镜像和卷的管理
  • 资源隔离保障
  • 容器网络配置
  • 存储管理

目前主流的容器引擎包括:

  • Docker(最流行的选择)
  • CRI-O(专为Kubernetes设计)
  • Podman(无需守护进程的替代方案)

OCI(Open Container Initiative)

OCI是一个由Docker、CoreOS、Google等公司共同创立的标准化组织,主要贡献包括:

  • 制定了容器镜像规范
  • 开发了runc(低层容器运行时)
  • 促进了容器技术的互操作性

容器运行时(Container Runtime)

容器运行时负责在节点上实际执行容器,可分为四种类型:

  1. 低层运行时:直接与内核交互

    • runc(Docker默认使用)
    • crun
    • runsc
  2. 高层运行时:通过容器引擎调用

    • containerd
    • CRI-O
  3. 沙箱运行时:提供额外的安全隔离

    • gVisor
  4. 虚拟化运行时:基于虚拟机技术

    • Kata Containers

Kubernetes核心概念

什么是Kubernetes?

Kubernetes(简称k8s)是Google开源的容器编排系统,其设计基于Google内部系统Borg的经验。主要特点包括:

  • 自动化部署、扩展和管理容器化应用
  • 声明式配置
  • 自我修复能力
  • 服务发现和负载均衡

架构解析

Kubernetes采用控制平面/工作节点(control plane/workers)架构:

控制平面组件

  • API Server:集群操作的唯一入口
  • etcd:分布式键值存储,保存集群状态
  • Scheduler:负责Pod的节点调度
  • Controller Manager:确保集群状态符合预期

工作节点组件

  • Kubelet:节点上的代理,管理Pod生命周期
  • Kube-proxy:网络代理和负载均衡器

关键端口

了解Kubernetes使用的关键端口对运维和故障排查至关重要:

控制平面端口

  • 6443:Kubernetes API服务器
  • 2379-2380:etcd客户端API
  • 10250:Kubelet API

工作节点端口

  • 10250:Kubelet API
  • 30000-32767:NodePort服务范围

本地环境搭建

工具选择

对于学习和开发,推荐以下本地Kubernetes解决方案:

  1. Minikube

    • 单节点集群
    • 支持多种驱动(Docker、VirtualBox等)
    • 适合快速验证概念
  2. Kind

    • 使用Docker容器模拟多节点集群
    • 轻量级,启动快速
    • 适合CI/CD测试

Minikube安装与使用

安装步骤

Linux系统安装示例:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
基本操作

启动集群:

minikube start --driver=docker

检查状态:

minikube status

访问仪表盘:

minikube dashboard

Kind安装与使用

安装步骤

Linux系统安装示例:

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
创建集群

单节点集群:

kind create cluster

多节点集群(使用配置文件):

# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
kind create cluster --config kind-config.yaml

基础操作实践

kubectl配置

kubectl是操作Kubernetes集群的主要命令行工具。

安装kubectl

Linux系统安装示例:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
实用配置

启用命令自动补全:

echo 'source <(kubectl completion bash)' >> ~/.bashrc

创建常用别名:

alias k=kubectl
complete -F __start_kubectl k

第一个Pod

运行Nginx Pod:

kubectl run nginx --image=nginx

查看Pod状态:

kubectl get pods

服务暴露

创建Service暴露Pod:

kubectl expose pod nginx --port=80 --type=NodePort

获取服务访问地址:

minikube service nginx --url

清理资源

删除Pod和服务:

kubectl delete pod nginx
kubectl delete service nginx

总结

通过第一天的学习,我们掌握了Kubernetes的基础架构和核心概念,学会了如何在本地搭建开发环境,并完成了第一个Pod的创建和管理。这些知识为后续深入学习Kubernetes打下了坚实基础。

建议学习者在实践中逐步熟悉这些概念和操作,通过不断尝试来加深理解。在接下来的学习中,我们将探索更复杂的Kubernetes资源和高级功能。

DescomplicandoKubernetes DescomplicandoKubernetes 项目地址: https://gitcode.com/gh_mirrors/de/DescomplicandoKubernetes

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丁群曦Mildred

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值