#!/bin/bash
# example: ./etcd.sh etcd01 192.168.80.10 etcd02=https://192.168.80.11:2380,etcd03=https://192.168.80.12:2380
#创建etcd配置文件/opt/etcd/cfg/etcd
ETCD_NAME=$1
ETCD_IP=$2
ETCD_CLUSTER=$3
WORK_DIR=/opt/etcd
cat > $WORK_DIR/cfg/etcd <<EOF
#[Member]
ETCD_NAME="${ETCD_NAME}"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://${ETCD_IP}:2380"
ETCD_LISTEN_CLIENT_URLS="https://${ETCD_IP}:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://${ETCD_IP}:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://${ETCD_IP}:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://${ETCD_IP}:2380,${ETCD_CLUSTER}"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
#Member:成员配置
#ETCD_NAME:节点名称,集群中唯一。成员名字,集群中必须具备唯一性,如etcd01
#ETCD_DATA_DIR:数据目录。指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指定-wal-dir,还会存储WAL文件;如果不指定会用缺省目录
#ETCD_LISTEN_PEER_URLS:集群通信监听地址。用于监听其他member发送信息的地址。ip为全0代表监听本机所有接口
#ETCD_LISTEN_CLIENT_URLS:客户端访问监听地址。用于监听etcd客户发送信息的地址。ip为全0代表监听本机所有接口
#Clustering:集群配置
#ETCD_INITIAL_ADVERTISE_PEER_URLS:集群通告地址。其他member使用,其他member通过该地址与本member交互信息。一定要保证从其他member能可访问该地址。静态配置方式下,该参数的value一定要同时在--initial-cluster参数中存在
#ETCD_ADVERTISE_CLIENT_URLS:客户端通告地址。etcd客户端使用,客户端通过该地址与本member交互信息。一定要保证从客户侧能可访问该地址
#ETCD_INITIAL_CLUSTER:集群节点地址。本member使用。描述集群中所有节点的信息,本member根据此信息去联系其他member
#ETCD_INITIAL_CLUSTER_TOKEN:集群Token。用于区分不同集群。本地如有多个集群要设为不同
#ETCD_INITIAL_CLUSTER_STATE:加入集群的当前状态,new是新集群,existing表示加入已有集群。
#创建etcd.service服务管理文件
cat > /usr/lib/systemd/system/etcd.service <<EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=${WORK_DIR}/cfg/etcd
ExecStart=${WORK_DIR}/bin/etcd \
--name=\${ETCD_NAME} \
--data-dir=\${ETCD_DATA_DIR} \
--listen-peer-urls=\${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls=\${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls=\${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=\${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=\${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=\${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster-state=new \
--cert-file=${WORK_DIR}/ssl/server.pem \
--key-file=${WORK_DIR}/ssl/server-key.pem \
--trusted-ca-file=${WORK_DIR}/ssl/ca.pem \
--peer-cert-file=${WORK_DIR}/ssl/server.pem \
--peer-key-file=${WORK_DIR}/ssl/server-key.pem \
--peer-trusted-ca-file=${WORK_DIR}/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
#--listen-client-urls:用于指定etcd和客户端的连接端口
#--advertise-client-urls:用于指定etcd服务器之间通讯的端口,etcd有要求,如果--listen-client-urls被设置了,那么就必须同时设置--advertise-client-urls,所以即使设置和默认相同,也必须显式设置
#--peer开头的配置项用于指定集群内部TLS相关证书(peer 证书),这里全部都使用同一套证书认证
#不带--peer开头的的参数是指定 etcd 服务器TLS相关证书(server 证书),这里全部都使用同一套证书认证
systemctl daemon-reload
systemctl enable etcd
systemctl restart etcd
k8s单Master节点(软件与脚本)
需积分: 0 163 浏览量
更新于2023-09-01
收藏 424.01MB ZIP 举报
Kubernetes(简称k8s)是Google开源的一种容器编排系统,用于自动化容器化的应用程序部署、扩展和管理。在这个“k8s单Master节点(软件与脚本)”的压缩包中,我们很显然会涉及到搭建一个单一Master节点的Kubernetes集群的详细步骤,以及可能包含的软件安装和配置脚本。
在Kubernetes集群中,Master节点是控制平面的中心,它负责处理所有的API请求,调度工作负载到Worker节点,并维护集群的状态。在单Master配置中,虽然降低了高可用性,但适合于小型测试环境或学习实践。
以下是关于搭建k8s单Master节点的一些关键知识点:
1. **前提条件**:你需要一个运行Linux操作系统的服务器或虚拟机。常见的选择有Ubuntu、CentOS或Debian等。确保服务器配置足够运行Kubernetes服务,包括内存、CPU和磁盘空间。
2. **软件准备**:主要涉及以下组件:
- **Docker**:Kubernetes运行在Docker容器内,所以首先要安装并配置Docker。
- **kubelet**:这是Kubernetes节点的主要代理,负责与Master通信,管理容器。
- **kube-apiserver**:提供Kubernetes API服务,接收和处理API请求。
- **kube-scheduler**:负责决定哪个Pod应该在哪个Node上运行。
- **kube-controller-manager**:运行一系列控制器,如ReplicationController,ServiceAccount,Endpoint等。
- **etcd**:一个分布式键值存储,用于保存Kubernetes集群的数据。
3. **配置文件**:每个组件都有自己的配置文件,你需要根据实际情况进行调整。例如,kube-apiserver的配置中需要设置证书和密钥,以确保安全通信。
4. **网络插件**:如Flannel或Calico,用于实现Pod间的网络通信。单Master配置中,网络插件的配置相对简单。
5. **启动服务**:通过脚本启动所有Master组件,通常使用systemd服务单元文件。这些脚本可能会包括初始化系统,配置环境变量,启动和验证服务等功能。
6. **安全设置**:为了保护集群,你需要设置网络策略,限制对API Server的访问,并为kubelet和kube-proxy设置正确的认证和授权。
7. **部署应用**:一旦Master节点运行起来,你可以通过创建Deployment或StatefulSet等资源对象,将应用程序部署到集群中。
8. **监控和日志**:尽管这是一个单Master集群,监控和日志依然重要。你可以使用Prometheus、Grafana来收集和展示性能指标,使用Elasticsearch和Logstash进行日志管理。
这个压缩包中的脚本将详细指导你完成上述步骤,包括下载、安装、配置和启动各个组件。每个步骤都可能涉及多个命令和配置文件修改,因此,理解每个部分的作用对于成功部署至关重要。在实践中,应仔细阅读脚本,了解其工作原理,以便在遇到问题时能够快速解决。同时,记得定期更新Kubernetes组件,以获取最新的安全补丁和功能改进。
cronaldo91
- 粉丝: 2531
- 资源: 2
最新资源
- 全球铜线分离器行业发展趋势:预计至2030年市场年复合增长率为5.5%
- 参考文献管理工具行业分析:全球收入约为327.8百万美元.docx
- 抽奖软件行业研究:美国是全球最大的提供商和消费商,市场份额超过90%.docx
- 差别化氨纶行业分析:2023年全球市场规模大约为2024百万美元.docx
- 超声波洁牙机器行业分析:2023年全球市场规模大约为747百万美元.docx
- 磁簧开关行业分析:2023年全球市场规模大约为500百万美元.docx
- 串口转以太网服务器行业分析:其在工业自动化、智能制造等领域的应用将更加广泛.docx
- 电池级溶剂行业分析:2023年全球市场规模大约为1105百万美元.docx
- 导电型碳化硅晶片行业分析:2023年全球市场规模大约为703百万美元.docx
- 电感器行业分析:2023年全球市场规模大约为6263百万美元.docx
- 动物运输市场分析:全球收入约为135百万美元,美国是最大市场.docx
- 多功能豆腐机行业分析:2023年全球市场规模大约为153百万美元.docx
- 反跟踪软件行业分析:2023年全球市场规模大约为801百万美元.docx
- 毕设报告.pptx - 详细毕业设计项目总结与成果展示
- 基于四轮驱动电动汽车控制平台实现了纵向速度和横向轨迹跟踪控制,横向算法基于模型预测控制的轨迹跟踪的仿真,实现了在一般附着系数路面跟踪平稳,高速低附着里面能够保证车辆控制的稳定性 想学习mpc控制的可
- 数据结构课件资料.zip