【Docker】Kubernetes部署容器化应用程序

一、基于kind部署Kubernetes集群

新建一台运行CentOS操作系统的虚拟机,将其作为Kubernetes主机

1、安装Docker Engine

powershell 复制代码
#禁用防火墙
systemctl disable --now firewalld
#将'SELINUX'选项设置为disabled
set -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
#临时禁用SELinux
setenforce 0
#更改主机名为host2
hostnamectl set-hostname host2
#重新执行Shell
bash

安装博客:Docker安装

2、安装kind

powershell 复制代码
# 1. 下载(自动识别架构)
curl -kLo ./kind https://hub.gitmirror.com/https://github.com/kubernetes-sigs/kind/releases/download/v0.22.0/kind-linux-amd64
powershell 复制代码
# 2. 赋予可执行权限
chmod +x ./kind-linux-amd64
# 3. 移动到系统全局路径
sudo mv ./kindkind-linux-amd64 /usr/local/bin/kind

查看kind版本

powershell 复制代码
kind version

3、安装kubectl

powershell 复制代码
curl -kLO "https://dl.k8s.io/release/$(curl -kL -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
powershell 复制代码
# 2. 赋予可执行权限
chmod +x ./kubectl
# 3. 移动到系统全局路径
sudo mv ./kubectl /usr/bin

查看版本:

powershell 复制代码
kubectl version --client

4、创建Kubernetes集群

(1)创建k8s目录

powershell 复制代码
mkdir k8s

在该目录下定义配置文件:testk8s-config.yaml

文件内容:

powershell 复制代码
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: testk8s         # 集群名称
nodes:
- role: control-plane
  extraPortMappings:    # 端口转发到宿主机
  - containerPort: 80
    hostPort: 80
  - containerPort: 30008
    hostPort: 30008
- role: worker
- role: worker
containerdConfigPatches:        # 给 containerd 打补丁
- |-
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = [
      "https://docker.m.daocloud.io",
      "https://hub-mirror.c.163.com",
      "https://mirror.baidubce.com",
      "https://ccr.ccs.tencentyun.com",
      "https://registry.docker-cn.com"
    ]
    
  # 如需更多加速器,继续追加:
  # [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
  #   endpoint = ["https://gcr.mirrors.ustc.edu.cn"]

(2)创建Kubernetes集群

powershell 复制代码
kind create cluster --config k8s/testk8s-config.yaml 

若报错:

需要升级内核版本:参考博客

升级完重启进入失败:解决方法

查看集群列表

powershell 复制代码
kind get clusters

二、在Kubernetes集群中运行并发布应用程序

1、创建Deployment对象

(1)先将当前目录切换到k8s目录

(2)在k8s目录下编辑定义Deployment对象的配置文件ngix-deploy.yaml,文件内容:

powershell 复制代码
apiVersion: apps/v1          # 版本号
kind: Deployment             # 类型
metadata:
  name: nginx-deploy         # Deployment 自身名称
spec:
  replicas: 3                # 副本数量
  selector:                  # 选择器,指定该控制器管理的 Pod
    matchLabels:
      app: nginx-pod
  template:                  # Pod 模板
    metadata:
      labels:                # Pod 的标签
        app: nginx-pod
    spec:
      containers:            # 容器列表(本例仅定义一个容器)
      - name: nginx          # 容器名称
        image: nginx:1.14.2  # 容器所用的镜像
        ports:
        - containerPort: 80  # 容器需要暴露的端口
          name: nginx-port

(3)创建Deployment对象

powershell 复制代码
kubectl apply -f nginx-deploy.yaml

(4)查看该对象每个Pod的IP地址

powershell 复制代码
kubectl get pods -o wide

2、创建Service对象

(1)创建定义Service对象的配置文件ngix-service.yaml

powershell 复制代码
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc   # Service 名称
spec:
  type: ClusterIP       # 也可改为 NodePort 或 LoadBalancer
  selector:
    app: nginx-pod      # 与 Deployment 中 Pod 标签保持一致
  ports:
  - port: 8080            # Service 对外暴露的端口
    targetPort: 80      # Pod 内容器监听的端口
    nodePort: 30008

(2)基于该配置文件创建Service对象

powershell 复制代码
kubectl apply -f nginx-service.yaml

(3)查看该Service对象的地址和端口

powershell 复制代码
kubectl get service nginx-svc

(4)测试从Kubernetes集群内部访问Service发布的应用程序

powershell 复制代码
docker exec -it testk8s-control-plane bash

(5)测试从Kubernetes集群外部访问Service发布的应用程序

powershell 复制代码
curl 127.0.0.1:30008

(6)查看该Service对象的详细信息

powershell 复制代码
kuberctl describe service nginx-svc

三、谢谢观看!

相关推荐
BullSmall22 分钟前
Sonarqube9.9 docker 镜像启动后 conf 下的配置文件没有了
docker·容器·eureka
ruofu3328 分钟前
wsl端是py312,但是项目是py311, 如何下载py311的依赖包(wheels)
python·docker
殷忆枫31 分钟前
AI笔记三十七:AI边缘端道桥安全监测系统:YOLOv8n推理与Web监控全解析
笔记·yolo
hold?fish:palm1 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
逸模1 小时前
轻加盟模式,稳住品牌统一调性的思路
笔记·建模·公装·翻模·交底
spider_xcxc1 小时前
Docker 实战:容器化多服务应用,Dockerfile 与 Compose 配置全解析
docker·云原生·eureka·虚拟化·容器化
whyTeaFo2 小时前
GAMES101: Lecture 10: Geometry 1 (Introduction) ppt笔记
笔记
啦啦啦啦啦zzzz2 小时前
算法:回溯算法
c++·算法·leetcode
hay_lee2 小时前
Kubernetes StatefulSet:OrderedReady 极简指南
云原生·容器·kubernetes
晚风吹长发2 小时前
Docker使用——Docker容器及相关命令
linux·运维·服务器·docker·容器·架构