通过k8s实现单pod部署

通过k8s实现nginx、mysql、dns、redis的单pod部署

运用上一次博客的内容完成k8s运行基础条件的部署,之后

创建目录:mkdir -p /k8s/pod(用于存放)

进入到pod目录中:cd /k8s/pod

1、创建1号pod:Nginx(Web服务)

cat > nginx-pod.yaml <<EOF

apiVersion: v1 #使用 Kubernetes API 的 v1 版本

kind: Pod #声明要创建的资源类型是 Pod

metadata: #Pod 的元数据

name: nginx-pod #给 Pod 起的名字

namespace: c2516 #把 Pod 放到名为 c2516 的命名空间里#

labels: #

app: nginx #给 Pod 打了一个标签

spec: #Pod 的期望状态

containers: #Pod 里要运行的容器列表

  • name: nginx #给这个容器起的名字

ports: #容器要暴露的端口列表

  • containerPort: 80 #容器内部监听的端口

image: nginx:alpine #使用的镜像

imagePullPolicy: IfNotPresent #如果本地已经有这个镜像,就不用再从仓库拉取了

EOF

创建pod:kubectl apply -f nginx-pod.yaml

要想局域网内其他网络能访问Web,
需要在运行nginx的pod的node服务器上下载yum install -y socat
把宿主机 8080 端口 → 转发到 Pod 里 Nginx 的 80 端口
--address 0.0.0.0 = 让局域网所有电脑都能访问 (在master上执行命令,丢到后台)

nohup kubectl port-forward pod/nginx-pod 8080:80 -n c2516 --address 0.0.0.0 > /dev/null 2>&1 &

2、创建2 号 Pod:独立 CoreDNS(DNS 服务)

cat > coredns-pod.yaml <<EOF

apiVersion: v1

kind: Pod

metadata:

name: coredns-pod

namespace: c2516

labels:

app: coredns

spec:

containers:

  • name: coredns

ports:

  • containerPort: 53 #

protocol: UDP #暴露 UDP 53 端口

  • containerPort: 53 #

protocol: TCP #暴露 TCP 53 端口

image: coredns/coredns #官方维护的 CoreDNS 容器镜像

imagePullPolicy: IfNotPresent

EOF

创建pod:kubectl apply -f coredns-pod.yaml

3、创建3 号 Pod:MySQL 8

cat > mysql-pod.yaml <<EOF

apiVersion: v1

kind: Pod

metadata:

name: mysql-pod

namespace: c2516

labels:

app: mysql

spec:

containers:

  • name: mysql

env: #容器的环境变量列表

  • name: MYSQL_ROOT_PASSWORD #MySQL 官方镜像固定识别 的环境变量名

value: "123456" #设置 MySQL 的 root 密码 = 123456

ports:

  • containerPort: 3306

image: mysql:8.0

imagePullPolicy: IfNotPresent

EOF

创建pod:kubectl apply -f mysql-pod.yaml

验证: kubectl exec -it mysql-pod -n c2516 -- mysql -uroot -p123456

4、创建4 号 Pod:Redis

cat > redis-pod.yaml <<EOF

apiVersion: v1

kind: Pod

metadata:

name: redis-pod

namespace: c2516

labels:

app: redis

spec:

containers:

  • name: redis

ports:

  • containerPort: 6379

image: redis:alpine

imagePullPolicy: IfNotPresent

EOF

创建Pod:kubectl apply -f redis-pod.yaml

验证:kubectl exec -it redis-pod -n c2516 -- redis-cli

查看所有 Pod 运行状态:kubectl get pods -n c2516 -owide

相关推荐
zhangjw3430 分钟前
第47篇:Java综合实战:电商秒杀系统(高并发场景)
java·开发语言
Lsetea33 分钟前
Kubernetes 1.37 Pod证书怎么签发:Signer与mTLS信任链排查
云原生·kubernetes·ssl证书·tls·mtls
土司大王40 分钟前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树
Wang's Blog1 小时前
Java框架快速入门:Spring Security+OAuth2之用户注册与唯一性校验实现
java·数据库·spring
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之多因子认证与TOTP实战
java·spring·ui
滕州市燕猫虎计算机科技工作室个体工商户2 小时前
Java面试题汇总
java·开发语言
新时代牛马2 小时前
docker run 起不来?从dockerd、containerd 到runc 一条线讲透
运维·docker·容器
2301_32241428043 小时前
活力孕康复APP 47737- 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·mysql·微信小程序·idea·微信开发者工具
君顾13 小时前
外卖CPS软件开发实战:从系统架构到部署全流程指南
java·开发语言·外卖
努力努力再努力wz3 小时前
【Docker 入门系列】:从 Namespace、CGroup 到 LXC:理解容器运行时、rootfs 与 LXC 实战
运维·docker·容器