k8s中篇

    技术2025-10-20  13

    k8s

    5,部署edct6,部署master 7,安装node节点8,node节点进阶

    5,部署edct

    把三个etcd放到三个服务器root下

    解压后生成一文件一目录

    1, 2,

    修改配置文件 这是配置单节点的 etcd_name:etcd名称 ETCD_DATA_DIR:数据库位置 ETCD_LISTEN_PEER_URLS:用于监听其他edct的 ETCD_LISTEN_CLIENT_URLS:用于监听edct以外的其他如master节点

    这是集群 ETCD_INITIAL_CLUSTER:记录所有edct名称和端口号

    3,刚才生成的证书复制到etcd下

    ###alias可以看到当前系统下的命令和命令别名

    进行node1,和node2 edct的部署

    回到node1上操作

    node2操作

    4,依次启动etcd

    卡在这就对了。。。说明在等待其他edct启动

    三个依次使用这个命令后。启动成功

    设置永久启动 可以通过这个命令来检查edct集群。。。是否正常状态

    /opt/etcd/bin/etcdctl --ca-file=/opt/etcd/ssl/ca.pem --cert-file=/opt/etcd/ssl/server.pem --key-file=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.1.106:2379,https://192.168.1.105:2379,https://192.168.1.107:2379" cluster-health

    这样算正常edct集群配置成功

    6,部署master

    apiserver证书的配置

    1,解压缩 生成三个文件,一个目录

    mv kube-apiserver.service kube-controller-manager.service kube-scheduler.service /usr/lib/systemd/system/ mv kubernetes /opt/ cp /root/TLS/k8s/{ca*pem,server.pem,server-key.pem} /opt/kubernetes/ssl/ -rvf

    修改conf文件

    修改

    其他不用改

    log-dir=/opt/kubernetes/logs \ 日志文件地址 etcd-servers=https://192.168.1.106:2379,https://192.168.1.105:2379,https://192.168.1.107:2379 \ 所有etcd节点端口 bind-address=192.168.1.106 \ 当前master监听的地址 secure-port=6443 \ 当前监听的端口 advertise-address=192.168.1.106 \ 通告地址 allow-privileged=true \ 是否设置超级管理员权限来创建容器 service-cluster-ip-range=10.0.0.0/24 \ service调度服务生成到的虚拟网络 enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \ 可以使用的插件 authorization-mode=RBAC,Node \ 授权模式 enable-bootstrap-token-auth=true \ 基于token自动颁发证书 token-auth-file=/opt/kubernetes/cfg/token.csv \ 基于特定用户颁发证书 service-node-port-range=30000-32767 \ service网段暴露的服务端口范围 kubelet-client-certificate=/opt/kubernetes/ssl/server.pem –kubelet-client-key=/opt/kubernetes/ssl/server-key.pem \ 访问kubelet所使用的证书 tls-cert-file=/opt/kubernetes/ssl/server.pem –tls-private-key-file=/opt/kubernetes/ssl/server-key.pem –client-ca-file=/opt/kubernetes/ssl/ca.pem –service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \ 基于https访问apiserver的时候使用的证书 etcd-cafile=/opt/etcd/ssl/ca.pem –etcd-certfile=/opt/etcd/ssl/server.pem –etcd-keyfile=/opt/etcd/ssl/server-key.pem \ 访问etcd所使用的证书 audit-log-maxage=30 –audit-log-maxbackup=3 –audit-log-maxsize=100 –audit-log-path=/opt/kubernetes/logs/k8s-audit.log" 日志相关内容

    2,controller-manager配置文件

    allocate-node-cidrs=true \ 是否支持网络插件

    不用改

    3,schaduler.conf

    也不用改

    可以看到这三个文件 启动master节点

    检测有无启动起来

    也可以查看日志打印是否正确

    查看节点信息

    4,配置tls 基于bootstrap自动颁发证书

    第一个要为true。第二个要对这个路径的文件进行授权 对这个

    中的这个

    进行授权(第一次配错了,我这里换成strap2)

    kubectl create clusterrolebinding kubelet-bootstrap2 \ --clusterrole=system:node-bootstrapper \ --user=kubelet-bootstrap2

    代表授权成功

    7,安装node节点

    docker

    主要三个。。。安装这三个

    1,worker node节点安装docker 先在master节点把node的tar包传到两个worker中

    2,解压缩

    3,ls

    4,移动管理脚本

    5,解压缩docker二进制文件

    6,将docker下的所有文件放到bin下

    7,启动docker

    worker节点的docker版本号跟k8s要对应

    kubelet 1,

    2,修改配置文件

    server这里改成master节点的端口

    这里是worker节点主机名

    这里不需要改

    这里也不需要改

    #####高并发这里要改,kubelet-config.yml文件, 最大打开文件数。 最大承受pod数

    这里改成当前主机的名称

    改这里的master的地址

    3,从master节点复制证书到worker节点

    4,启动kubelet和kube-proxy服务

    5,查看启动日志

    没有明显错误就可以了

    6,在master节点为worker节点颁发证书

    把前面那段英文复制下来

    再看下csr就是已颁发状态

    7,颁发完证书后在master节点就可以执行这个命令了

    出现这个代表成功,worker已加入到master里面了

    8,worker2同理

    node节点安装完毕

    8,node节点进阶

    ###########安装网络插件

    1,确认启动CNI 必须是CNI

    能看到则正常

    2,生成两个目录 3,找到 离线安装 4,在master节点上执行yaml脚本文件,实现worker节点网络插件功能

    用这个命令查看是否下载镜像,启动完容器

    再看node1已经变成ready状态了

    node2,如果一直没变ready可以重启node2节点,不是大问题

    5,授权apiserver访问kubelet

    到此为止node节点配置好了。但是node2,还是没变ready

    找到原因了,node2没有做第二步操作

    再回到master

    #####nginx

    或者worker节点下

    先配置加速镜像

    systemctl restart docker

    worker2

    镜像转变tar包 保存到当前位置

    放到node1里

    tar包 导入到docker镜像

    启动nginx容器

    通过master节点启动docker容器

    这两个命令都可以查看容器有没启动起来

    现在容器已经启动了。不知道是工作在worker1还是worker2

    说明运行在k8s-node1节点上了

    再启动一个nginx容器 再启动一个

    看一下newweb和testweb分别运行在哪个节点下

    可以看到1个在node1,一个在node2

    2,暴露端口 就是端口映射

    这时候可能不能直接访问web页面

    可以在虚拟机上访问nginx 如果curl命令使用不了

    ####3,web组件

    官方的dashboard,,,安装速度特别慢。。网络不好最好不用

    等4,5个钟把

    必须用https来访问

    换浏览器吧

    挺不好用的现在看第三方的 kuboard

    放到worker1的root下 也放到worker2的root下

    还有这个放到master下

    1,docker加载tar包

    2,回到master节点 不要立马执行start_kuboard.yaml文件。要修改配置 你希望kuboard运行在哪个工作节点上?

    查看是否运行成功

    查看暴露端口

    生成token的方式

    kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d

    生成token复制的位置

    进入默认名称空间

    就是刚才创建的那三个docker容器

    Processed: 0.009, SQL: 9