码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux下离线安装k8s集群1.19.4附带nfs存储


    linux下离线安装k8s集群1.19.4附带nfs存储

    活动地址:毕业季·进击的技术er

     一,环境简介

    kubernetes-1.19.4集群部署计划

    序号

    服务器配置

    IP地址

    操作系统

    备注

    1

    cpu:2c

    内存:4G
    硬盘:200G

    192.168.217.16

    centos 7.6

    k8s主节点
    nfs

    2

    cpu:2c
    内存:4G
    硬盘:200G

    192.168.217.17

    centos 7.6

    k8s从节点

    3

    cpu:2c
    内存:4G
    硬盘:200G

    192.168.217.18

    centos 7.6

    k8s从节点

    三台服务器均为虚拟机,网络配置为nat模式。

    链接:https://pan.baidu.com/s/19PTj1VwpvaSxYlhbFuqP6w?pwd=k8ss 
    提取码:k8ss 

    离线安装包的链接!!!!!!!!!!!!!包含docker环境
     

     二,

    关于域名映射问题和网络问题,主机名称修改如下,如何修改在此不讨论。

    1. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    2. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    3. 192.168.217.16 master
    4. 192.168.217.17 slave1
    5. 192.168.217.18 slave2

    编辑hosts文件,域名映射如上。因是nat网络模式,因此,三台服务器自组网,三个网卡配置文件内容大体如下:

    1. TYPE="Ethernet"
    2. BOOTPROTO="static"
    3. DEFROUTE="yes"
    4. IPV4_FAILURE_FATAL="no"
    5. NAME="ens33"
    6. UUID="d4876b9f-42d8-446c-b0ae-546e812bc954"
    7. DEVICE="ens33"
    8. ONBOOT="yes"
    9. IPADDR=192.168.217.16
    10. NETMASK=255.255.255.0
    11. GATEWAY=192.168.217.2
    12. DNS1=192.168.217.16

    三,

    network服务已启用则关闭NetworkManager防止冲突

    systemctl stop  NetworkManager &&  systemctl disable  NetworkManager

     四,时间服务器

    时间服务器的搭建见本人博客:Linux ntp时间服务器的搭建和配置_zsk_john的博客-CSDN博客_linux ntp服务器搭建Linux ntp时间服务器的搭建和配置date +"%Z %z"查看ntp服务器与上层ntp的状态【命令】ntpq -premote:本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先refid:参考上一层ntp主机地址st:stratum阶层when:多少秒前曾经同步过时间poll:下次更新在多少秒后reach:已经向上层ntp服务器要求更新的次数delay:网络延迟offset:时间补偿jit...https://blog.csdn.net/alwaysbefine/article/details/109055169

    五,

    内核参数修改,

    这个步骤是必须要有的,k8s在安装和使用的过程中会检测这三个参数:

    vim /etc/sysctl.conf

    1. net.bridge.bridge-nf-call-ip6tables = 1
    2. net.bridge.bridge-nf-call-iptables = 1
    3. net.ipv4.ip_forward = 1

     写入这几个参数在sysctl.conf 文件内,然后sysctl -p 命令 使之生效。

    六,

    三台服务器都关闭防火墙,selinux,swap挂载,升级内核版本到5.1

    关闭防火墙命令是:

    systemctl disable firewalld && systemctl stop firewalld

    selinux 临时关闭:setenforce 0

    selinux 永久关闭:修改 /etc/selinux/config 这个文件,SELINUX=disabled

    swap卸载,见本人博客:KVM虚拟机管理工作二(虚拟机磁盘优化,Centos进入dracut模式,报 /dev/centos/swap does not exist,如何恢复)_zsk_john的博客-CSDN博客_kvm虚拟机磁盘缩容量前言:KVM虚拟机的安装其实不是一个简单的事情,为什么要这么说呢?因为,KVM虚拟机在安装完毕后,我们可能会有很多定制化的需求,比如,更改虚拟机的root密码,安装一些常用软件,或者常用的软件环境。也会有扩容,缩容,增加逻辑盘以及打快照等等扩展需求。那么,KVM虚拟机的操作系统安装一般是什么要求呢?我想,第一,是需要最小化安装,这里最小化安装是为了降低KVM镜像的大小,使得镜像轻量化。第二,是关闭swap,因为很多环境是不能有swap的,相对于生产服务器来说,通常swap都是一个鸡肋的存在,并且https://blog.csdn.net/alwaysbefine/article/details/124831650这里是一个比较容易忽略的地方,卸载swap建议最好按照我的博客所写进行,否则会重新启动不了服务器。

    七,升级内核

    升级内核的原因是k8s运行在高版本内核下比较稳定,升级内核方法如下:

    1. rpm -ivh kernel-ml-5.16.9-1.el7.elrepo.x86_64.rpm
    2. grub2-set-default "CentOS Linux (5.16.9-1.el7.elrepo.x86_64) 7 (Core)"
    3. grub2-editenv list ## 查看内核启动项

     六七步骤建议都完成后,统一重启服务器。三个节点都做。

    八,

    服务器之间的免密互信操作

    具体操作见本人博客:科普扫盲---ssh免密登陆(ssh的一些小秘密)_zsk_john的博客-CSDN博客_ssh免密登录配置ssh协议和tcp/ip 协议一样非常的重要,那么,如何使用这个ssh呢?这个协议到底有什么用处呢?一,ssh协议是什么ssh是secure SHell的简写,意思为安全的shell,中文也叫安全的外壳协议(是不是比较喜感的一个名称?),那,既然都是shell了,自然是有shell的那些特征啦。SSH 主要由三部分组成:传输层协议 [SSH-TRANS]提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可https://blog.csdn.net/alwaysbefine/article/details/123451448

    九,docker环境的部署

    docker离线环境部署见本人博客 :docker的离线安装以及本地化配置_zsk_john的博客-CSDN博客docker的离线安装以及本地化配置首先需要说明离线安装的适用场景:项目具有私有云,内外网分离,安全性要求比较高,相对在线安装,离线安装优势很大,方便,灵活,不需要配置yum源以及考虑整体网络环境的事情了,只需要关心局域网的网络就可以了。废话不多说了,离线安装有RPM包安装方式,二进制安装包方式,源码编译安装方式,最为简便的方式为二进制安装包方式(没有rpm依赖问题,预编译和编译中,缺少依赖而失败的问题)。一,下...https://blog.csdn.net/alwaysbefine/article/details/110310112

    这里需要说明一下,docker的版本是ce19. 03.9,该版本是和k8s的1.19.4版本适配的




     正式开始部署k8s集群

    一,

    k8s集群规划,因此需要在环境变量内设定一个新变量,变量写在 /etc/profile 文件内,(三个服务器都要写)变量内容如下:

    export no_proxy=localhost,127.0.0.1,dev.cnn,192.168.217.16,default.svc.cluster.local,svc.cluster.local,cluster.local,10.96.0.1,10.96.0.0/12,10.244.0.0/16

     二,

    k8s基本组件的安装:

    k8s-1.19.4-offline这个文件夹内的k8s.tar.gz文件解压,然后将该解压目录挂载为本地仓库。

    k8s-1.19.4-offline这个文件夹内的conntrack.tar.gz解压,然后执行命令  rpm -ivh *   安装,这个是k8s的强依赖。

    检查本地仓库无误后执行以下命令进行安装:

    yum install -y  kubeadm-1.19.4 kubelet-1.19.4 kubectl-1.19.4

    三,

    镜像的导入:

    k8s-1.19.4-offline这个文件夹内的master-images.tar.gz在16服务器解压,然后执行批量导入命令:for i in `ls master-images`;do docker load <$i;done

    k8s-1.19.4-offline这个文件夹内的slave1-images.tar.gz在17服务器解压,然后执行批量导入命令:for i in `ls slave1-images`;do docker load <$i;done

    k8s-1.19.4-offline这个文件夹内的slave2-images.tar.gz在18服务器解压,然后执行批量导入命令:for i in `ls slave2-images`;do docker load <$i;done

    四,

    k8s-1.19.4-offline这个文件夹内的kubeadm.zip在三个服务器都解压,然后,将可执行文件kubeadm-1.19.3移动到 /usr/bin/目录下,改名为kubeadm

    修改kubeadm.conf 文件,重点修改如下内容:

    1. localAPIEndpoint:
    2. advertiseAddress: 192.168.217.16
    3. bindPort: 6443
    4. nodeRegistration:
    5. criSocket: /var/run/dockershim.sock
    6. name: zsk.cnn
    7. taints:
    8. - effect: NoSchedule
    9. key: node-role.kubernetes.io/master

    五,

    集群初始化,执行以下命令即可:

    kubeadm init --config kubeadm.conf

     如果初始化失败的话,可以使用命令 kubeadm reset 命令进行重置,不建议删除相关环境文件重做初始化,加入节点命令在此命令的末尾,复制该命令后在其它节点运行即可加入节点,不需要对此命令进行任何改动,如果加入集群失败,可同样使用kubeadm reset 命令重新恢复环境,再次加入。

    注意,此命令是在master节点执行,命令成功执行完成后,输出有节点加入命令,复制节点加入命令,在其余两个节点执行即可。

    此时的集群状态应该是noready,在主节点执行命令:kubectl apply -f kube-flannel.yml 集群状态即可恢复正常。

    六,

    安装kubernetes-dashboard

    1. mkdir /etc/kubernetes/pki/dashboard/
    2. cd /etc/kubernetes/pki/dashboard/
    3. openssl genrsa -out tls.key 2048
    4. openssl req -new -key tls.key -subj "/CN=zsk.cnn"  -out tls.csr
    5. openssl x509 -req -days 3650 -in tls.csr -CA ../ca.crt -CAkey ../ca.key -CAcreateserial -out tls.crt
    6. kubectl create secret generic kubernetes-dashboard-certs --from-file=/etc/kubernetes/pki/dashboard/ -n kube-system
    7. kubectl apply -f dashboard.yml #安装dashboard

    dashboard.yml文件的内容如下:

    1. [root@master YAML]# vim dash-ingress.yaml
    2. kind: Ingress
    3. apiVersion: extensions/v1beta1
    4. metadata:
    5. name: kubernetes-dashboard
    6. namespace: kubernetes-dashboard
    7. annotations:
    8. kubernetes.io/ingress.class: nginx
    9. nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    10. nginx.ingress.kubernetes.io/rewrite-target: /
    11. nginx.ingress.kubernetes.io/ssl-redirect: 'true'
    12. nginx.ingress.kubernetes.io/use-regex: 'true'
    13. spec:
    14. tls:
    15. - hosts:
    16. - dash.zsk.cnn
    17. secretName: kubernetes-dashboard-certs
    18. rules:
    19. - host: dash.zsk.cnn
    20. http:
    21. paths:
    22. - path: /
    23. pathType: ImplementationSpecific
    24. backend:
    25. serviceName: kubernetes-dashboard
    26. servicePort: 443

     

    输出如下:

    secret/kubernetes-dashboard-certs created

    #集群角色绑定

    kubectl create clusterrolebinding default --clusterrole=cluster-admin --serviceaccount=kube-system:default --namespace=kube-system

    输出如下为正确:

    clusterrolebinding.rbac.authorization.k8s.io/default created

    未完待续!!!!!!!!!

     

  • 相关阅读:
    [nlp] Bert 冻结参数,打开训练emb
    用c++写平均分
    MindFusion JS Chart 2.0 Crack
    【TiDB】TiCDC canal_json的实际应用
    C++11 条件变量
    【牛客题】数字匹配 <模拟>
    RabbitMQ简介及在Linux中安装部署(yum)
    玩转Mysql系列 - 第20篇:异常捕获及处理详解
    学习黑马程序员JavaScript总结
    使用python分组查询每组取前面10条数据
  • 原文地址:https://blog.csdn.net/alwaysbefine/article/details/125415224
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号