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 命令查看容器日志。
相关推荐
颜如玉10 分钟前
Redis scan高位进位加法机制浅析
redis·后端·开源
why技术1 小时前
在我眼里,这就是天才般的算法!
后端·面试
绝无仅有1 小时前
Jenkins+docker 微服务实现自动化部署安装和部署过程
后端·面试·github
程序视点1 小时前
Escrcpy 3.0投屏控制软件使用教程:无线/有线连接+虚拟显示功能详解
前端·后端
zhuyasen2 小时前
当Go框架拥有“大脑”,Sponge框架集成AI开发项目,从“手写”到一键“生成”业务逻辑代码
后端·go·ai编程
东皋长歌2 小时前
SpringBoot集成ELK
spring boot·后端·elk
布列瑟农的星空3 小时前
大话设计模式——关注点分离原则下的事件处理
前端·后端·架构
努力敲代码的小盆友4 小时前
[自用笔记]上传本地项目至github
笔记·github
现在就干4 小时前
Spring事务基础:你在入门时踩过的所有坑
java·后端
该用户已不存在4 小时前
Gradle vs. Maven,Java 构建工具该用哪个?
java·后端·maven