### 步骤概览
下表展示了部署K8S集群中etcd和flannel的整体流程:
| 步骤序号 | 步骤名称 | 操作内容 |
|---------|---------------------|------------------------------------|
| 1 | 安装etcd | 部署etcd服务并配置集群信息 |
| 2 | 安装flannel | 部署flannel网络插件 |
### 步骤详解
#### 步骤1:安装etcd
1.1 创建etcd Deployment对象
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: etcd
spec:
replicas: 1
selector:
matchLabels:
app: etcd
template:
metadata:
labels:
app: etcd
spec:
containers:
- name: etcd
image: quay.io/coreos/etcd:v3.3.10
command:
- /usr/local/bin/etcd
args:
- --data-dir=/etcd-data
- --name=etcd-server
- --listen-client-urls=http://0.0.0.0:2379
- --advertise-client-urls=http://0.0.0.0:2379
```
1.2 创建etcd Service对象
```yaml
apiVersion: v1
kind: Service
metadata:
name: etcd
spec:
selector:
app: etcd
ports:
- protocol: TCP
port: 2379
targetPort: 2379
```
#### 步骤2:安装flannel
2.1 部署flannel DaemonSet
```yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-flannel-ds
namespace: kube-system
labels:
tier: node
app: flannel
spec:
selector:
matchLabels:
app: flannel
template:
metadata:
labels:
app: flannel
spec:
containers:
- name: kube-flannel
image: quay.io/coreos/flannel:v0.13.0
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr", "--iface=eth0" ]
```
2.2 创建flannel网络配置
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-flannel-cfg
namespace: kube-system
data:
cni-conf.json: |
{
"name": "cbr0",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",
"capabilities": {
"portMappings": true
}
}
]
}
```
### 总结
通过以上步骤,我们成功地部署了etcd和flannel在K8S集群中。etcd用于存储集群的元数据信息,而flannel用于提供集群节点间的网络通信。
希望这篇文章能够帮助那些刚入门K8S的小白了解如何部署etcd和flannel,并为之后在实际项目中的应用提供基础。祝大家学习进步!