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 命令查看容器日志。
相关推荐
计算机毕设定制辅导-无忧学长19 分钟前
《基于Spring Boot的减脂轻食购物网站》
java·vue.js·spring boot·后端·减脂轻食购物网站
沐欣工作室_lvyiyi31 分钟前
基于SpringBoot的博物馆预约系统设计与实现(论文+源码)
java·spring boot·后端·计算机毕业设计
拾光记1 小时前
Maven依赖与类加载机制
后端
迪丽热爱2 小时前
HTTP Error 500.30 - ASP.NET Core app failed to start
后端·asp.net
茉莉玫瑰花茶2 小时前
GO [ 函数 ]
开发语言·后端·golang
QuZhengRong2 小时前
【Spring】后端接收的请求参数多了一个逗号的处理办法
java·后端·spring
打工仔折腾 AI2 小时前
从零写一个CAD 02:实体容器、Esc取消与键盘失灵的排查
人工智能·后端·python·性能优化
用户8356290780512 小时前
使用 Python 拆分和提取 PDF 页面
后端·python
用户8356290780512 小时前
使用 Python 操作 PowerPoint 中的图片
后端·python