acontos7.9 环境上 部署安装 一台master 3台node 的k8s集群, 创建免密登录 然后使用ansible 编写一键部署shell
时间: 2024-04-08 21:29:31 浏览: 22
为了在 CentOS 7.9 环境上部署一台 Master 节点和三台 Node 节点的 Kubernetes 集群,并实现免密登录,可以按照以下步骤操作:
**前提条件:**
1. 确保你已经安装了 Ansible 工具。
2. 你已经在所有节点上设置了免密登录,可以使用 SSH 免密登录到每个节点。
**步骤:**
1. 创建一个新的目录用于存放 Ansible 相关文件:
```shell
$ mkdir k8s-deployment
$ cd k8s-deployment
```
2. 创建一个名为 `hosts` 的文件,用于定义主机和节点信息:
```shell
$ vi hosts
```
在文件中添加以下内容(替换 `<master-ip>` 和 `<node-ip>` 为实际的 IP 地址):
```
[master]
<master-ip>
[nodes]
<node-ip1>
<node-ip2>
<node-ip3>
```
3. 创建一个名为 `playbook.yml` 的 Ansible Playbook 文件,用于定义部署任务:
```shell
$ vi playbook.yml
```
在文件中添加以下内容:
```yaml
---
- hosts: all
become: true
tasks:
- name: Install Docker
yum:
name: docker
state: present
- name: Start Docker service
service:
name: docker
state: started
- name: Install kubeadm, kubelet, kubectl
yum:
name:
- kubeadm
- kubelet
- kubectl
state: present
- name: Enable and start kubelet service
service:
name: kubelet
state: started
enabled: true
- name: Initialize Kubernetes master
command: kubeadm init --pod-network-cidr=10.244.0.0/16
args:
creates: /etc/kubernetes/admin.conf
register: join_command
when: "'master' in group_names"
- name: Save join command to file
copy:
content: "{{ join_command.stdout_lines[0] }}"
dest: /tmp/join-command.txt
when: "'master' in group_names"
- name: Copy Kubernetes admin.conf for local user
copy:
src: /etc/kubernetes/admin.conf
dest: $HOME/.kube/config
remote_src: true
when: "'master' in group_names"
- name: Install Calico network plugin
command: kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
args:
creates: /etc/kubernetes/manifests/calico.yaml
when: "'master' in group_names"
```
4. 运行 Playbook 执行部署任务:
```shell
$ ansible-playbook -i hosts playbook.yml
```
完成上述步骤后,应该已经成功部署了一台 Master 节点和三台 Node 节点的 Kubernetes 集群,并实现了免密登录。请注意,上述 Playbook 只提供了一个简单的示例,实际操作可能需要根据你的环境和需求进行适当的调整。