前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ansible自动化部署K8S集群

Ansible自动化部署K8S集群

作者头像
王先森sec
发布2023-04-24 17:13:32
9400
发布2023-04-24 17:13:32
举报
文章被收录于专栏:王先森

简介

本文是通过ansible-playbook的roles功能实现二进制批量自动安装部署Kubernetes集群服务。本想做成离线版本,但由于coredns,ingress,dashboard插件需要拉取镜像,(这里把flannel做成非容器安装版)如需容器版去https://github.com/flannel-io/flannel中获取yaml文件

部署思路

系统初始化

  1. 关闭selinux,firewalld
  2. 关闭swap
  3. 时间同步
  4. 写hosts

Etcd集群部署

  1. 生成etcd证书
  2. 部署三个etcd集群
  3. 查看集群状态

部署Master

  1. 生成apiserver证书
  2. 部署apiserver、controller-manager和scheduler组件
  3. 启动TLS Bootstrapping

部署Node

  1. 安装Docker
  2. 部署kubelet和kube-proxy
  3. 在Master上允许为新Node颁发证书
  4. 授权apiserver访问kubelet
部署插件(准备好镜像)

  1. Web UI
  2. CoreDNS
  3. Ingress Controller

一键部署角色

Ansible安装

Ansible自动化批量管理入门

Ansible之角色详解

目录结构:

代码语言:javascript
复制
[root@ceph01 ~]$tree -L 2 k8s/
k8s/
├── ansible.cfg
├── group_vars
│   └── all.yml
├── hosts
├── roles
│   ├── addons              # 部署k8s插件目录
│   ├── common              # 系统初始化目录
│   ├── docker              # docker安装
│   ├── etcd                # etcd安装
│   ├── master              # master节点
│   ├── nginx               # ingrees代理Nginx
│   ├── node                # node节点
│   └── tls                 # 证书生成
└── single.yml

代码GitHub下载:https://github.com/5279314/ansible-k8s

基础介绍

代码语言:javascript
复制
[root@ansible ~/k8s]$cat group_vars/all.yml 
# 安装目录 
software_dir: '/server/tools'          # 所需软件存放目录
k8s_work_dir: '/opt/kubernetes'        # k8s的安装目录
etcd_work_dir: '/opt/etcd'             # etcd的安装目录
tmp_dir: '/tmp/k8s'                    # 其他文件存放目录

# 集群网络
service_cidr: '192.168.0.0/16'
localhost_dns: '10.1.1.2'    # 本地dns
cluster_dns: '192.168.0.2'   # 与roles/addons/files/coredns.yaml中IP一致,并且是service_cidr中的IP;
pod_cidr: "172.7.0.0/16"     # 容器所需IP段
service_nodeport_range: '30000-32767' # 暴露端口范围
cluster_domain: 'cluster.local'

# 自签证书可信任IP列表,为方便扩展,可添加多个预留IP
cert_hosts:
  # 包含所有LB、VIP、Master IP和service_cidr的第一个IP
  k8s:
    - 127.0.0.1
    - 192.168.0.1
    - 10.1.1.50
    - 10.1.1.60
    - 10.1.1.100
    - 10.1.1.110
    - 10.1.1.120
    - 10.1.1.130
    - 10.1.1.150
  # 包含所有etcd节点IP
  etcd:
    - 10.1.1.100
    - 10.1.1.130
    - 10.1.1.120

# k8s插件镜像
coredns_images: 'coredns/coredns:1.8.0'
dashboard_images: 'kubernetesui/dashboard:v2.0.4'
traefik_images: 'traefik:v1.7.26'
本地软件目录
代码语言:javascript
复制
[root@ansible ~/k8s]$ls /server/tools/
cfssl                               docker-20.10.1.tgz
cfssl-certinfo                      etcd-v3.3.22-linux-amd64.tar.gz
cfssljson                           flannel-v0.11.0-linux-amd64.tar.gz
cfssl.tar.gz                        kubernetes-1.20.11.tar.gz
cni-plugins-linux-amd64-v0.8.7.tgz

部署结果

代码语言:javascript
复制
[root@k8s-master1 ~]# kubectl get pod -A -o wide
NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
kube-system   coredns-5b5b4cb755-w7gvf                1/1     Running   0          67m   172.7.3.2    k8s-node1   <none>           <none>
kube-system   kubernetes-dashboard-757b689f8b-vbv7f   1/1     Running   0          67m   172.7.61.2   k8s-node2   <none>           <none>
kube-system   traefik-ingress-controller-c88t2        1/1     Running   0          67m   172.7.3.3    k8s-node1   <none>           <none>
kube-system   traefik-ingress-controller-d7lpk        1/1     Running   0          67m   172.7.61.3   k8s-node2   <none>           <none>

如有问题欢迎留言!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 部署思路
    • 系统初始化
      • Etcd集群部署
        • 部署Master
          • 部署Node
            • 部署插件(准备好镜像)
        • 一键部署角色
          • Ansible安装
            • 基础介绍
              • 本地软件目录
            • 部署结果
            • 如有问题欢迎留言!!
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档