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 命令查看容器日志。
相关推荐
VX:Fegn089540 分钟前
计算机毕业设计|基于springboot + vue图书管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
cike_y2 小时前
Spring的配置&各种依赖注入
java·开发语言·后端·spring
椰果子2 小时前
Nacos 2.x.x版本不适用JDK17的处理方式
java·spring boot·后端
上进小菜猪3 小时前
基于 YOLOv8 的共享单车乱停放智能识别系统— 从数据集构建到可视化部署的完整项目
后端
爱敲代码的小黄3 小时前
阿里人的 2025 年终总结:买房、晋升、订婚、投资,遇见更清晰的自己
后端·面试·架构
it运维技术圈3 小时前
斩杀线之老杨面试了一个42岁的资深大佬,他哭了
面试·职场和发展
2501_921649494 小时前
如何获取外汇实时数据:全球货币行情对接指南
后端·python·websocket·金融·区块链
C雨后彩虹4 小时前
猜密码问题
java·数据结构·算法·华为·面试
卷福同学4 小时前
2025年终总结:再次选择、沪漂、第一次演讲、相亲无果
后端·程序员·github
韩师傅5 小时前
从随叫随到到规范配送:现代物流系统与 REST API 的登场
后端·python·全栈