docker compose替换k8s
文章目录
说明
k8s越来越复杂,也不太好维护,决定使用docker compose 替换k8s
安装docker
## 卸载老版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
## 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
## 下载阿里云镜像仓库文件
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
## 安装docker
yum install -y docker-ce docker-ce-cli containerd.io
## 开机启动
systemctl start docker
systemctl enable docker
### 建议软连接 docker 目录
systemctl stop docker
mv /var/lib/docker /data
ln -s /data/docker /var/lib/
systemctl start docker
配置加速地址
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.o0o.us.kg",
"https://docker.chongzhen.icu",
"https://docker.kengdie.xyz",
"https://docker.1panel.live"
],
"insecure-registries": ["127.0.0.1:5000"],
"log-driver":"json-file",
"log-opts":{"max-size":"10m"}
}
迁移yaml文件
k8s redis.yaml文件
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-config
labels:
app: redis
data:
redis.conf: |-
port 6379
#bind 127.0.0.1 -::1
protected-mode no
#daemonize yes
maxmemory-policy volatile-lru
#loadmodule /data/redisearch_v2.4.8.so
#loadmodule /data/librejson_v2.0.8.so
---
###声明 Deployment####
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
spec:
replicas: 1
###更新:容器准备完成之后,延迟60s,配合strategy.maxUnavailable: 0时,可以忽略###
#minReadySeconds: 60
strategy:
###升级方式,默认的方式###
type: RollingUpdate
###严格控制,每次升级一个pod,不可用状态为0个pod###
rollingUpdate:
###滚动升级时会先启动1个pod###
maxSurge: 1
###滚动升级时允许的最大不可用的pod个数###
maxUnavailable: 0
selector:
matchLabels:
app: redis
template:
metadata:
####禁用istio自动注入sidecar###
annotations:
sidecar.istio.io/inject: "false"
###istio需要app和version两个标签###
labels:
app: redis
version: v1
spec:
containers:
- name: redis
image: redis:7.4.2
###
imagePullPolicy: IfNotPresent
#imagePullPolicy: Always
command:
- "sh"
- "-c"
- "redis-server /etc/redis/redis.conf"
env:
###设置时区###
- name: TZ
value: Asia/Shanghai
#- name: LC_ALL
value: zh_CN.UTF-8
#- name: LANG
value: zh_CN.UTF-8
ports:
- containerPort: 7070
volumeMounts:
###挂载点###
- mountPath: /data
###对应下面卷 cephfs-pvc-pod 的名称###
name: redis-data
###指定子目录,会在cephfs里创建子文件夹####
subPath: redis/pvc
###挂载点###
- mountPath: /etc/redis/redis.conf
### volumes.name ###
name: redis-config
### 文件名 ####
subPath: redis.conf
volumes:
###卷名称,对应上面的挂载名称###
- name: redis-data
persistentVolumeClaim:
###对应cephfs-pvc.yaml的metadata.name###
claimName: k8s-pvc
- name: redis-config
configMap:
defaultMode: 0600
### 对应的ConfigMap名称 ###
name: redis-config
---
###可以使用 kubectl api-versions 查询支持的version###
apiVersion: v1
### service 类型####
kind: Service
###元数据###
metadata:
###service的名称####
name: redis
###具体描述###
spec:
###标签选择器###
selector:
###标签是 nginx 的pod###
app: redis
###节点类型是 NodePort ###
type: NodePort
###虚拟IP###
#clusterIP: 10.98.239.102
###端口列表###
ports:
###http的端口说明,istio需要端口的命名为协议名(http)或者协议名加后缀(http-a)###
- name: tcp
###TCP协议###
protocol: TCP
###虚拟IP的端口是80###
port: 6379
###pod的端口是80,一般和port属性一致###
#targetPort: 80
###实际物理机IP映射的端口,一般自动分配, kubectl get services 可以查看,如果外部有LB,可以指定,方便管理####
nodePort: 30379
docker compose
目录结构
/redis
├── docker-compose.yml
├── conf
│ └── redis.conf
└── data
docker-compose.yaml
services:
redis:
image: redis:7.4.2
container_name: redis
restart: unless-stopped
command: sh -c "redis-server /etc/redis/redis.conf"
environment:
TZ: Asia/Shanghai
ports:
- "30379:6379"
volumes:
- ./data:/data
- ./conf/redis.conf:/etc/redis/redis.conf
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '1'
memory: 2G
redis.conf
bind 0.0.0.0
protected-mode no
# requirepass your_strong_password
maxmemory 4gb
maxmemory-policy volatile-lru
appendonly yes
dir /data
tcp-keepalive 300
常用命令
## 进入容器
docker exec -it 容器名 /bin/bash
## 后台启动, -d代表后台启动,会应用配置
docker compose up -d
## 强制重建服务
docker compose up -d --build --force-recreate
## 仅启动 web 和 db 服务
docker compose up -d web db
## 仅停止容器(不删除)
docker compose stop
## 仅启动容器(不更新配置)
docker compose start
## 停止并清理
docker compose down
## 彻底清理(含数据卷)
docker compose down -v
## 查看容器运行状态
docker compose ps
## 实时查看日志
docker compose logs -f
## 查看服务依赖关系
docker compose config --services
文章作者
上次更新 2025-04-24