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 命令查看容器日志。
相关推荐
Victor3561 小时前
Redis(104)Redis的最大数据量是多少?
后端
Victor3561 小时前
Redis(105)Redis的数据类型支持哪些操作?
后端
鬼火儿8 小时前
SpringBoot】Spring Boot 项目的打包配置
java·后端
cr7xin8 小时前
缓存三大问题及解决方案
redis·后端·缓存
yoke菜籽8 小时前
面试150——字典树
面试·职场和发展
赵文宇(温玉)9 小时前
构建内网离线的“github.com“,完美解决内网Go开发依赖
开发语言·golang·github
间彧9 小时前
Kubernetes的Pod与Docker Compose中的服务在概念上有何异同?
后端
间彧9 小时前
从开发到生产,如何将Docker Compose项目平滑迁移到Kubernetes?
后端
牛奶咖啡139 小时前
利用Github与Hexo搭建属于自己的在线个人博客
github·hexo创建静态博客·免费部署博客到公网上·创建自定义静态博客·将静态博客上传到github·将自己的网站发布到网上
散峰而望10 小时前
C++入门(一)(算法竞赛)
c语言·开发语言·c++·编辑器·github