Kubernetes (K8s) 入门到实战教程

一、K8s 简介

  1. 什么是 Kubernetes

Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩缩容和管理容器化应用。

  1. 核心功能
  • 服务发现与负载均衡
  • 存储编排
  • 自动部署与回滚
  • 自动扩缩容
  • 自愈(重启失败容器)
  • 密钥与配置管理
  1. 核心组件
  • Master 节点:控制平面(API Server、Scheduler、Controller Manager、etcd)
  • Node 节点:工作节点(kubelet、kube-proxy、容器运行时)

二、环境准备

  1. 安装 Docker

bash

Ubuntu/Debian

sudo apt update

sudo apt install docker.io -y

sudo systemctl start docker

sudo systemctl enable docker

CentOS/RHEL

sudo yum install docker -y

sudo systemctl start docker

sudo systemctl enable docker

  1. 安装 kubeadm、kubelet、kubectl

bash

添加 Kubernetes 源

sudo apt update

sudo apt install -y apt-transport-https ca-certificates curl

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gpg

echo 'deb signed-by=/etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gpg https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

安装

sudo apt update

sudo apt install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

  1. 关闭 Swap

bash

sudo swapoff -a

sudo sed -i '/swap/s/^/#/' /etc/fstab

三、初始化 Master 节点

  1. 初始化

bash

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

  1. 配置 kubectl

bash

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown (id−u):(id -u):(id−u):(id -g) $HOME/.kube/config

  1. 安装网络插件(Flannel)

bash

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

  1. 查看节点状态

bash

kubectl get nodes

四、加入 Node 节点

  1. 在 Master 节点获取加入命令

bash

kubeadm token create --print-join-command

  1. 在 Node 节点执行

bash

sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:

五、核心资源操作

  1. Pod

bash

创建 Pod

kubectl run nginx --image=nginx

查看 Pod

kubectl get pods

查看 Pod 详情

kubectl describe pod nginx

删除 Pod

kubectl delete pod nginx

  1. Deployment

bash

创建 Deployment

kubectl create deployment nginx --image=nginx --replicas=3

查看 Deployment

kubectl get deployments

扩缩容

kubectl scale deployment nginx --replicas=5

更新镜像

kubectl set image deployment/nginx nginx=nginx:1.21

回滚

kubectl rollout undo deployment/nginx

  1. Service

bash

创建 Service(NodePort)

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

查看 Service

kubectl get services

访问

curl :

  1. ConfigMap & Secret

bash

创建 ConfigMap

kubectl create configmap nginx-config --from-literal=server_name=nginx

创建 Secret

kubectl create secret generic nginx-secret --from-literal=password=123456

六、常用命令

  1. 资源查看

bash

kubectl get all

kubectl get pods -o wide

kubectl get nodes -o wide

  1. 日志查看

bash

kubectl logs

kubectl logs -f

  1. 进入容器

bash

kubectl exec -it -- /bin/bash

  1. 资源删除

bash

kubectl delete deployment nginx

kubectl delete service nginx

kubectl delete pod

七、实战示例:部署 Nginx

  1. 创建 Deployment

yaml

nginx-deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: nginx

spec:

replicas: 3

selector:

matchLabels:

app: nginx

template:

metadata:

labels:

app: nginx

spec:

containers:

  • name: nginx

image: nginx:1.21

ports:

  • containerPort: 80

bash

kubectl apply -f nginx-deployment.yaml

  1. 创建 Service

yaml

nginx-service.yaml

apiVersion: v1

kind: Service

metadata:

name: nginx

spec:

type: NodePort

selector:

app: nginx

ports:

  • port: 80
    targetPort: 80
    nodePort: 30080

bash

kubectl apply -f nginx-service.yaml

  1. 访问

bash

curl :30080

八、总结

本教程涵盖了 K8s 从环境搭建到核心资源操作的完整流程,适合初学者快速入门。

学习建议:

  1. 多练习命令,熟悉资源操作
  2. 理解 Pod、Deployment、Service 关系
  3. 学习 Helm、Ingress 等高级功能
相关推荐
牧瀬クリスだ2 小时前
观察者模式:一个对象变化,一群对象自动响应
java·观察者模式·设计模式
小张成长计划..2 小时前
【Linux】26:线程互斥和同步
java·开发语言
邪修king4 小时前
Re:Linux 系统篇(三十五):进程间通信Chapter2:从匿名管道到进程池:Linux 进程间通信实战(深度理解「先描述,再组织」)
java·linux·运维
拆房老料5 小时前
【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining
java·前端·人工智能·设计模式·prompt
张张123y6 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
曹牧10 小时前
C#:空合并运算符
java·前端·数据库
布吉岛的石头10 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
golang学习记11 小时前
IDEA 2026年的玩法已经完全不同
java·ide·intellij-idea
紧跟先前的步伐11 小时前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
金銀銅鐵11 小时前
[Java] 展示添加元素时 ArrayList 的内部变化
java·后端·ai编程