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 等高级功能
相关推荐
Javatutouhouduan6 小时前
2026Java面试的正确打开方式!
java·高并发·java面试·java面试题·后端开发·java编程·java八股文
JAVA面经实录9176 小时前
Java初级最终完整版学习路线图
java·spring·eclipse·maven
Cat_Rocky7 小时前
k8s-持久化存储,粗浅学习
java·学习·kubernetes
知识领航员8 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
释怀°Believe8 小时前
Spring解析
java·后端·spring
ooseabiscuit8 小时前
Laravel4.x:现代PHP框架的奠基之作
java·开发语言·php
节奏昂9 小时前
【一份基础软件的下载地址和安装地址】
java
没什么本事9 小时前
关于C# panel 添加lable问题 -- 明确X和Y 位置错误
android·java·c#
dhashdoia9 小时前
GPT-5.5 代码开发实战:Codex与Browser Use深度集成与星链4SAPI优化方案
java·数据库·人工智能·gpt·架构
xuhaoyu_cpp_java10 小时前
SpringMVC学习(二)
java·经验分享·笔记·学习·spring