Kubernetes入门指南:从基础到实践

1. 什么是Kubernetes?

Kubernetes(简称k8s)是一个开源的容器编排平台,用于自动化容器的部署、扩展和管理。它支持多种容器运行时,如Docker和Rocket

2. Kubernetes核心概念

2.1 Pod

  • 定义:Pod是Kubernetes中最小的可部署单元,包含一个或多个容器。这些容器共享同一个网络命名空间,可以通过localhost进行通信

  • 示例:创建一个简单的Pod,包含一个Nginx容器。

    yaml 复制代码
    text
    apiVersion: v1
    kind: Pod
    metadata:
      name: example-pod
    spec:
      containers:
      - name: example-container
        image: nginx
        ports:
        - containerPort: 80

2.2 Replication Controller

  • 定义:Replication Controller确保集群中始终有指定数量的Pod副本在运行。如果某个Pod失效,它会自动替换

  • 示例:使用Replication Controller创建三个Nginx Pod副本。

    yaml 复制代码
    text
    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: example-rc
    spec:
      replicas: 3
      selector:
        app: example-app
      template:
        metadata:
          labels:
            app: example-app
        spec:
          containers:
          - name: example-container
            image: nginx
            ports:
            - containerPort: 80

2.3 Service

  • 定义 :Service提供了一个统一的访问入口和负载均衡机制,允许用户无需关心Pod的具体IP地址13

  • 示例:创建一个Service来访问前面的Nginx Pod。

    yaml 复制代码
    text
    apiVersion: v1
    kind: Service
    metadata:
      name: example-service
    spec:
      selector:
        app: example-app
      ports:
      - name: http
        port: 80
        targetPort: 80
      type: ClusterIP

3. 服务器配置要求

在部署Kubernetes之前,需要确保服务器满足以下最低配置要求:

  • CPU:至少2个核心(主节点建议4个核心以上)
  • 内存:至少2GB RAM(主节点建议4GB以上)
  • 存储:至少20GB可用磁盘空间(主节点建议50GB以上)
  • 操作系统:支持多种Linux发行版,如Ubuntu 18.04或CentOS 7及以上版本

4. 安装步骤

4.1 准备环境

  1. 关闭防火墙和SELinux

    arduino 复制代码
    bash
    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
    sudo setenforce 0
  2. 配置SELinux :编辑 /etc/selinux/config 文件,将 SELINUX 设置为 disabled,然后重启系统。

  3. 安装必要的软件

    arduino 复制代码
    bash
    sudo yum install -y epel-release
    sudo yum install -y etcd socat conntrack ebtables ipset

4.2 安装Docker

  1. 安装Docker

    bash 复制代码
    bash
    sudo yum install -y docker
    sudo systemctl start docker
    sudo systemctl enable docker

4.3 安装Kubernetes

  1. 添加Kubernetes仓库

    ini 复制代码
    bash
    cat  /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=0
    EOF
  2. 安装Kubernetes组件

    rust 复制代码
    bash
    sudo yum install -y kubelet kubeadm kubectl
  3. 启动kubelet服务

    bash 复制代码
    bash
    sudo systemctl start kubelet
    sudo systemctl enable kubelet

4.4 初始化Kubernetes集群

  1. 初始化集群

    arduino 复制代码
    bash
    sudo kubeadm init --image-mirror 'docker.io/mirrorgooglecontainers' --pod-network-cidr=10.244.0.0/16
  2. 配置kubectl

    bash 复制代码
    bash
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  3. 部署网络插件(例如Flannel):

    bash 复制代码
    bash
    curl -s https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | sed "s/amd64/arm64/g" | kubectl apply -f -

5. 验证安装

  1. 检查Pod状态

    arduino 复制代码
    bash
    kubectl get pods -A
  2. 检查节点状态

    arduino 复制代码
    bash
    kubectl get nodes

6. 部署示例应用

  1. 创建一个简单的Pod

    复制代码
    bash
    kubectl apply -f pod.yaml
  2. 查看Pod状态

    arduino 复制代码
    bash
    kubectl get pods

7. 使用kubectl管理集群

  • 部署应用 :使用 kubectl apply 命令部署应用。
  • 监控集群 :使用 kubectl get 命令查看资源状态。
  • 日志查看 :使用 kubectl logs 命令查看容器日志。
相关推荐
你的人类朋友2 分钟前
什么是API签名?
前端·后端·安全
昵称为空C2 小时前
SpringBoot3 http接口调用新方式RestClient + @HttpExchange像使用Feign一样调用
spring boot·后端
架构师沉默2 小时前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
逛逛GitHub2 小时前
发现一个 AI 大模型服务质量榜单。
github
RoyLin3 小时前
TypeScript设计模式:适配器模式
前端·后端·node.js
该用户已不存在3 小时前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust
Moonbit3 小时前
MoonBit 正式加入 WebAssembly Component Model 官方文档 !
前端·后端·编程语言
Goland猫3 小时前
电商架构图
后端
Java中文社群4 小时前
重要:Java25正式发布(长期支持版)!
java·后端·面试
我是天龙_绍4 小时前
Whisper 通过 mp3输出中文
后端