码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【k8s】(一) 使用kubeadm快速部署一个K8s集群


    目录

    一、基础概念

    二、硬件要求

    三、环境准备与规划

    四、安装docker并添加yum源

    4.1 安装docker

    4.2 设置docker镜像仓库地址

    4.3 设置k8s的YUM源

    五、安装kubeadm,kubelet和kubectl

    六、部署K8s Master

    6.1 kubeadm初始化并下载镜像

    6.2 复制配置文件,并授权 

    6.3 查看节点

    七、部署K8s Slave

    7.1 master生成token

    7.2 从节点加入master

    7.3 再次查看节点

    八、部署CNI网络插件

    九、测试K8s集群

    十、卸载k8s


    一、基础概念

    官网 :KubernetesKubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。星际尺度 Google 每周运行数十亿个容器,Kubernetes 基于与之相同的原则来设计,能够在不扩张运维团队的情况下进行规模扩展。处处适用 无论是本地测试,还是跨国公司,Kubernetes 的灵活性都能让你在应对复杂系统时得心应手。永不过时 Kubernetes 是开源系统,可以自由地部署在企业内部,私有云、混合云或公有云,让您轻松地做出合适的选择。将 150+ 微服务迁移到 Kubernetes 上的挑战 Sarah Wells, 运营和可靠性技术总监, 金融时报观看视频 参加 2022 年 10 月 24-28 日的北美 KubeCon 参加 2023 年 4 月 17-21 日的欧洲 KubeCon Kubernetes 特性 自动化上线和回滚 Kubernetes 会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况以确保你不会同时终止所有实例。如果出现问题,Kubernetes 会为你回滚所作更改。你应该充分利用不断成长的部署方案生态系统。 服务发现与负载均衡 无需修改你的应用程序即可使用陌生的服务发现机制。Kubernetes 为容器提供了自己的 IP 地址和一个 DNS 名称,并且可以在它们之间实现负载均衡。 存储编排 自动挂载所选存储系统,包括本地存储、诸如 AWS 或 GCP 之类公有云提供商所提供的存储或者诸如 NFS、iSCSI、Ceph、Cinder 这类网络存储系统。 Secret 和配置管理 部署和更新 Secret 和应用程序的配置而不必重新构建容器镜像, 且不必将软件堆栈配置中的秘密信息暴露出来。 自动装箱 根据资源需求和其他限制自动放置容器,同时避免影响可用性。 将关键性的和尽力而为性质的工作负载进行混合放置,以提高资源利用率并节省更多资源。 批量执行 除了服务之外,Kubernetes 还可以管理你的批处理和 CI 工作负载,在期望时替换掉失效的容器。 IPv4/IPv6 双协议栈 为 Pod 和 Service 分配 IPv4 和 IPv6 地址 水平扩缩 使用一个简单的命令、一个 UI 或基于 CPU 使用情况自动对应用程序进行扩缩。 自我修复 重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不响应用户定义的健康检查的容器,并且在它们准备好服务之前不会将它们公布给客户端。 为扩展性设计 无需更改上游源码即可扩展你的 Kubernetes 集群。 案例分析 "https://kubernetes.io/zh-cn/

     

    1. ​ 1、kubernetes,简称 K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多
    2. 个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效(powerful),Kubernetes
    3. 提供了应用部署,规划,更新,维护的一种机制。
    4. ​ 2、kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具,这个工具能通过两条指令完成一个
    5. kubernetes集群的部署。
    6. (1)创建一个 Master 节点
    7. kubeadm init
    8. (2)将一个 Node 节点加入到当前集群中
    9. kubeadm join

    二、硬件要求

    1. 在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
    2. (1)一台或多台机器,操作系统 CentOS7.x-86_x64
    3. (2)硬件配置:3GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
    4. (3)可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
    5. (4)禁止swap分区

    三、环境准备与规划

    1. 1、集群规划
    2. node1 192.168.215.140 (master)
    3. node2 192.168.215.141 (slave)
    4. node3 192.168.215.142 (slave)
    5. 2、必要环境准备(3台都执行)
    6. (1) 都关闭防火墙
    7. systemctl stop firewalld
    8. systemctl disable firewalld
    9. (2) 都关闭selinux
    10. setenforce 0 # 临时
    11. sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
    12. (3) 都关闭swap
    13. swapoff -a # 临时
    14. sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
    15. (4) 根据规划设置主机名
    16. hostnamectl set-hostname node1
    17. hostnamectl set-hostname node2
    18. hostnamectl set-hostname node3
    19. (5) 只在master140添加hosts
    20. cat >> /etc/hosts << EOF
    21. 192.168.215.140 node1
    22. 192.168.215.141 node2
    23. 192.168.215.142 node3
    24. EOF
    25. (6) 三台服务器,将桥接的IPv4流量传递到iptables的链
    26. cat > /etc/sysctl.d/k8s.conf << EOF
    27. net.bridge.bridge-nf-call-ip6tables = 1
    28. net.bridge.bridge-nf-call-iptables = 1
    29. EOF
    30. (7) sysctl --system # 生效
    31. (8) 时间同步
    32. yum install ntpdate -y
    33. ntpdate time.windows.com
    34. (9) 重启所有服务器

    四、安装docker并添加yum源

            Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

    4.1 安装docker

    1. 3台都需要安装docker
    2. 1、使用wget命令下载docker-ce.repo
    3. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    4. 2、安装docker18.06.1版本
    5. yum -y install docker-ce-18.06.1.ce-3.el7
    6. 3、设置开机自启,并启动docker
    7. systemctl enable docker && systemctl start docker
    8. 4、查看docker版本
    9. docker --version

    4.2 设置docker镜像仓库地址

      设置docker镜像仓库地址为:阿里巴巴的地址,加速镜像下载

    1. 3台都需要设置仓库地址
    2. 1、创建文件夹
    3. sudo mkdir -p /etc/docker
    4. 2、替换镜像仓库地址
    5. sudo tee /etc/docker/daemon.json <<-'EOF'
    6. {
    7. "registry-mirrors": ["https://p4e9di9t.mirror.aliyuncs.com"]
    8. }
    9. EOF
    10. 3、重启docker
    11. systemctl daemon-reload
    12. systemctl restart docker

    4.3 设置k8s的YUM源

    1. 3台都执行
    2. cat > /etc/yum.repos.d/kubernetes.repo << EOF
    3. [kubernetes]
    4. name=Kubernetes
    5. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    6. enabled=1
    7. gpgcheck=0
    8. repo_gpgcheck=0
    9. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    10. EOF

    五、安装kubeadm,kubelet和kubectl

    1. 1、安装指定版本的1.18,避免兼容性问题
    2. yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
    3. 2、设置开机自启
    4. systemctl enable kubelet

    六、部署K8s Master

    6.1 kubeadm初始化并下载镜像

    1. 1、在192.168.215.140(Master)执行。
    2. 2、service-cidr 和 pod-network-cidr 只要是和当前网段不冲突的ip就可以。
    3. 3、由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
    1. kubeadm init \
    2. --apiserver-advertise-address=192.168.215.140 \
    3. --image-repository registry.aliyuncs.com/google_containers \
    4. --kubernetes-version v1.18.0 \
    5. --service-cidr=10.96.0.0/12 \
    6. --pod-network-cidr=10.244.0.0/16

     6.2 复制配置文件,并授权 

    1. 在 140 master上面继续执行
    2. mkdir -p $HOME/.kube
    3. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    4. sudo chown $(id -u):$(id -g) $HOME/.kube/config

       6.3 查看节点

    1. kubectl get nodes
    2. 发现只有master一个节点,并且状态是 “未准备”

    七、部署K8s Slave

      把从节点加入到master当中去,从而组成一个集群,所以接下来的操作基本都是在141/142 从节点上面执行的。

    7.1 master生成token

    1. 在140 master 节点上面执行如下命令,生成token,从而让其他节点加入进来,默认24h有效
    2. kubeadm token create --print-join-command

     7.2 从节点加入master

    1. 复制master上面生成的命令,在从节点141/142上面分别执行:
    2. kubeadm join 192.168.215.140:6443 --token bycusu.59ms8jd3eq24762t --discovery-token-ca-cert-hash sha256:27beb79651247a57b6272f27f6e2c6d64085a2130b0103387e4cf0cd2e85e167

     7.3 再次查看节点

    1. kubectl get nodes
    2. 在master上面执行该命令,发现节点数量增加了2个

    八、部署CNI网络插件

    1. 1、在master上面执行该命令,需要等待5-10分钟,若失败,多执行几次
    2. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    3. 2、查看详细系统状态 ,需要每个是Running
    4. kubectl get pods -n kube-system
    5. 3、查看节点状态,每个node都是reaady
    6. kubectl get nodes
    7. 【注】当2和3都是running与ready状态表示cni网络插件已经安装完成

    九、测试K8s集群

    1. 在Kubernetes集群中创建一个pod,验证是否正常运行:master
    2. 1、kubectl create deployment nginx --image=nginx
    3. 2、kubectl get pod,svc 查看状态是否为running,然后执行第3步暴露端口
    4. 3、kubectl expose deployment nginx --port=80 --type=NodePort
    5. 4、kubectl get pod,svc 查看映射端口是多少
    6. 访问地址:http://192.168.215.140:32491

     

    十、卸载k8s

    1. kubeadm reset -f
    2. modprobe -r ipip
    3. lsmod
    4. rm -rf ~/.kube/
    5. rm -rf /etc/kubernetes/
    6. rm -rf /etc/systemd/system/kubelet.service.d
    7. rm -rf /etc/systemd/system/kubelet.service
    8. rm -rf /usr/bin/kube*
    9. rm -rf /etc/cni
    10. rm -rf /opt/cni
    11. rm -rf /var/lib/etcd
    12. rm -rf /var/etcd
    13. yum clean all
    14. yum remove kube*

  • 相关阅读:
    macOS Sonoma 正式版系统已发布,macos14值得更新吗
    Charles模拟弱网
    GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图
    vue 项目中,后端返回文件流,导出excel
    css实现圆角三角形,圆角三角形的实现
    深入探究Python多进程编程:Multiprocessing模块基础与实战【第98篇—Multiprocessing模块】
    文心一言 vs. GPT-4: 全面比较
    Windows搭建青龙面板并且可以外网登录教程
    优先队列实现
    clickhouse远程访问Oracle 11g数据库(clickhouse-jdbc-bridge)
  • 原文地址:https://blog.csdn.net/m0_62676056/article/details/127337128
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号