Ubuntu环境下单机部署Kubernetes与Docker容器化技术实践指南

引言

在当今的云计算和微服务架构中,Kubernetes和Docker已经成为不可或缺的技术工具。Kubernetes提供了强大的容器编排能力,而Docker则是容器化技术的代表。本文将详细指导如何在Ubuntu环境下单机部署Kubernetes集群,并结合Docker容器化技术,帮助读者从零开始掌握这一强大的技术组合。

前置条件

  1. 操作系统:本文以Ubuntu 20.04 LTS为例。
  2. 硬件要求:至少2核CPU、4GB内存。
  3. 软件工具:终端(Terminal)、SSH客户端(可选)。

第一步:安装Docker

Docker是容器化技术的核心,首先我们需要在Ubuntu上安装Docker。

  1. 更新系统包

    sudo apt update && sudo apt upgrade -y
    
  2. 安装Docker

    sudo apt install docker.io -y
    
  3. 启动并启用Docker服务

    sudo systemctl start docker
    sudo systemctl enable docker
    
  4. 验证Docker安装

    docker --version
    

第二步:安装Kubernetes

Kubernetes(简称K8s)是容器编排工具,接下来我们将安装Kubernetes。

  1. 添加Kubernetes仓库

    sudo apt install -y curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
  2. 更新系统包并安装Kubernetes组件

    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
    
  3. 启动Kubelet服务

    sudo systemctl start kubelet
    sudo systemctl enable kubelet
    

第三步:初始化Kubernetes集群

  1. 初始化Kubernetes主节点
    
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    

初始化完成后,终端会输出一段kubeadm join命令,请保存该命令,用于后续添加工作节点。

  1. 配置Kubectl

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  2. 安装Pod网络插件(如Flannel)

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

第四步:验证Kubernetes集群

  1. 检查节点状态
    
    kubectl get nodes
    

你应该看到主节点处于Ready状态。

  1. 部署一个示例应用

    kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
    kubectl expose deployment hello-minikube --type=NodePort --port=8080
    
  2. 访问示例应用

    minikube service hello-minikube --url
    

复制输出的URL,在浏览器中访问,你应该能看到 echoserver 的响应。

第五步:Docker与Kubernetes的协同工作

  1. 创建Docker镜像: 创建一个简单的Dockerfile:
    
    FROM nginx:latest
    COPY index.html /usr/share/nginx/html/
    

创建index.html文件:

   <h1>Hello from Docker and Kubernetes!</h1>
  1. 构建并推送镜像

    docker build -t my-nginx:latest .
    docker tag my-nginx:latest myregistry/my-nginx:latest
    docker push myregistry/my-nginx:latest
    
  2. 在Kubernetes中部署该镜像: 创建一个部署文件nginx-deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
     name: nginx-deployment
    spec:
     replicas: 2
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
         - name: nginx
           image: myregistry/my-nginx:latest
           ports:
           - containerPort: 80
    

应用部署文件:

   kubectl apply -f nginx-deployment.yaml
  1. 验证部署
    
    kubectl get pods
    kubectl get deployments
    

你应该看到两个nginx副本正在运行。

总结

通过本文的详细指导,你已经成功在Ubuntu环境下单机部署了Kubernetes集群,并学会了如何使用Docker进行容器化应用的开发与部署。这一强大的技术组合将为你的微服务架构和云原生应用提供坚实的基础。

希望本文能为你提供有价值的信息和操作指南,让你在Kubernetes和Docker的世界中游刃有余。如果你有任何问题或需要进一步的指导,欢迎随时交流探讨!

参考文献

  1. Kubernetes官方文档:
  2. Docker官方文档:
  3. Minikube官方文档:

祝你在容器化和编排的旅程中一帆风顺!?