前言
我通过自己构建dockerfile定制自己的镜像。按照我的步骤,前期将启动脚本和etcd所需配置导入镜像中,这样一来后期部署的yaml只需要打入几个环境变量即可,这样将非常简洁方便!
- 所需脚本和所有内容都将在我的GitHub中找到:
https://github.com/xll-forever/k8s-etcd
- 当然,etcd安装包可以去官网下载压缩包,解压后与Dockerfile放在同一目录下
构建镜像
如果你不想自己构建镜像,可以去阿里云拉取我构建好的镜像,然后就可以直接跳到用yaml部署的步骤:
docker pull registry.cn-hangzhou.aliyuncs.com/leige24/k8s-etcd:v1
- 使用centos7源镜像
- 使用root用户操作
- 复制解压后的etcd文件到容器内
ADD etcd-v3.3.10-linux-amd64/etcd* /usr/bin/
- 导入etcd.sh启动脚本,设置权限后执行脚本
- 生成镜像(在Dockerfile当前目录执行):
docker build -t etcd:v1 .
cat Dockerfile
FROM centos7-tools:stable
USER root
ADD etcd-v3.3.10-linux-amd64/etcd* /usr/bin/
COPY etcd.sh /
RUN chmod 777 /etcd.sh
CMD ["/etcd.sh"]
cat etcd.sh
#!/bin/bash
/usr/bin/etcd --data-dir=/var/lib/etcd --name=${
MY_POD_NAME} --listen-peer-urls=http://0.0.0.0:2380 --listen-client-urls=http://0.0.0.0:2379 --advertise-client-urls=http://${
MY_POD_NAME}.${
SERVICE_NAME}.${
CLUSTER_NAMESPACE}:2379 --initial-advertise-peer-urls=http://${
MY_POD_NAME}.${
SERVICE_NAME}.${
CLUSTER_NAMESPACE