k8s上篇

    技术2025-11-08  25

    k8s

    1,初识k8s2,k8s核心3,构建k8s集群前。服务初始化4,构建k8s

    1,初识k8s

    k8s功能

    ###k8s集群分为两个节点 master load 主节点 work load 工作节点

    schaduler通过k8s数据库edct来读取数据,发送给controller manager的

    整个工作流程是: 1,用户通过kubectl发送指令到主节点的apiserver 这时候apiserver会通过edct对kubectl做一个身份认证。帐号密码等。

    2,权限认证通过以后apiserver会找到schaduler。叫他找一个节点,启动服务。 这时候schaduler不知道使用哪个节点。schaduler会通知apiserver去etcd里面找到这个节点。找到以后返回给scheduler。scheduler又把这信息返回给apiserver。apiserver返回节点id给controller manager

    3,controller manager需要通过apiserver与工作节点的kubelet建立通信 4,kubelet找到对应节点的docker,启动容器

    5,这时候容器需要网络,kube-proxy可以做一个代理和ip地址给docker的pod。这样外部可以访问容器了

    2,k8s核心

    controller:启动,删除pod的

    客户端访问工作节点先访问service。因为pod向service注册了地址信息

    label:管理标签

    namespace:命名空间

    3,构建k8s集群前。服务初始化

    一共10大步

    生产环境下搭建k8s

    采用离线部署方式。

    生产环境下部署多master集群 因为master节点不允许宕机。work节点可以宕机。宕机后可以将自己的容器迁移到另外的work节点上。迁移的过程必须依赖master节点

    而且work节点与master节点进行通讯依赖 load balancer(2个)作负载均衡。。edct储存master节点的帐号密码。存储worker节点的地址。所以也必须三台edct(一主多从)或者多台。必须奇数。能选举出主节点,且不允许宕机。

    6台虚拟机

    自己测试实验环境,2核2g内存

    虚拟机8g才够用。。。。压力散打

    三种部署方式

    第一种方式连测试环境都玩不了。 所以推荐第二第三种

    第二种,简单。 第三种,复杂利于学习

    单节点。。。。master搭建准备,利用单master升级为多master

    安装部分

    1,准备三个虚拟机

    2,进行服务器的初始化工作

    3,#3个节点服务器同时进行初始化操作。怎么搞

    点击查看-撰写-撰写栏打开 点击撰写栏–发送到全部会话

    (1)关闭防火墙

    (2)关闭交换分区 临时关闭

    三个窗口都打开编辑

    每一个服务器都删掉swap那行

    (3)配置主机名

    (4)配置名称解析 修改k8s master1

    其余两个一样 粘贴过来

    (5)关闭selinux

    这种是已经关闭掉了

    这是临时关闭 永久关闭

    黑色那行改成disabled

    (6)配置时间同步 1,配置服务端

    执行这两个命令

    那个iburst是上游服务器的意思 把这四个删了加这句

    然后allow下面修改

    允许31网段的所有访问

    然后

    将这个注释打开

    启动服务端+自动启动服务端

    检查服务端是否启动

    如果不显示就restart服务一次

    2,配置客户端node1,node2

    其余的跟服务端一样。server那里修改指向为服务端

    测试客户端有无启动 上尖括号加* 号代表时间同步配置成功

    上尖括号加?号代表不成功。

    或者

    4,构建k8s

    对称加密:加密解密用的相同密钥 非对称加密:公钥加密私钥解密 单向加密:只能加密不能解密 我们用第二个

    我们用第二个

    ###减少服务器资源。测试环境下 使用主节点master安装一个edct 其余两个node也分别安装一个edct。

    ###需要准备这几个tar包

    1,

    启动cfssl.sh

    配置server-csr.json

    因为证书是颁发给edct的。edct又安装在这几个服务器下的。所以ip改成这几个服务器的

    自建证书

    ca.pem:公钥 ca.ley.pem:私钥

    颁发证书 如下图

    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server

    这时候应该有4个证书

    到此颁发证书完毕

    Processed: 0.016, SQL: 9