首页 > 编程知识 正文

如何搭建k8s集群,最简单的k8s集群部署

时间:2023-05-06 08:32:01 阅读:152405 作者:2039

目录1、k8s简介1、k8s是什么2、k8s特性3、k8s集群体系结构和组件4、k8s核心概念2、自签名SSL证书3、k8s三种部署方式4、k8s单节点部署(etcd )。

一、k8s简介1、什么是k8s kubernetes是谷歌2014年开源的容器集群管理系统,kubernetes简称k8s

k8s用于部署集装箱化APP应用程序,k8s的扩展和管理提供了容器组织、资源调度、灵活扩展、部署管理、服务发现等一系列功能。 kubernetes的目标是轻松高效地部署容器化APP应用程序。 http://www.kubernetes.io 2,k8s特性的自我修复

在节点故障时重新启动失败的容器,进行更换和重新部署,保证预期的拷贝数; 通过杀死未通过运行状况检查的容器,并在未准备好之前不处理客户端请求,来确保在线服务不会中断。 弹性伸缩

通过基于命令、UI或CPU利用率自动快速扩展和收缩APP应用实例,确保APP应用程序业务在并发使用全面的小型蚂蚁时具有高可用性; 在业务高峰期回收资源,以最低成本执行服务。 自动化部署和回滚

K8S使用一次更新一个Pod的滚动更新策略更新APP应用程序,而不是同时删除所有Pod,如果更新过程中出现问题,它会回滚更改,以避免升级影响业务。 服务发现和负载平衡

K8S为多个容器提供统一访问入口(内部IP地址和DNS名称),并对所有相关容器进行负载平衡,因此用户无需考虑容器的IP问题。 机密性和配置管理

管理敏感数据和APP配置,而无需镜像敏感数据,从而提高敏感数据的安全性。 您也可以将常规设置保存在K8S中,以便于APP应用程序使用。 存储组织

从本地存储器、公共云(如AWS )或网络存储器(如NFS、GlusterFS或Ceph )装载外部存储系统,可以大大提高存储灵活性。 批处理

满足一次性任务、定时任务批量数据处理和分析的场景3、k8s集群体系结构和组件

master 组件

kube-apiserver

在Kubernetes API、集群集成门户、组件协调器、rest风格的API中提供接口服务,所有目标资源的添加/删除调查和侦听操作都交给APIServer处理后,Etcd存储kube -控制管理器

处理集群中的常规后台任务。 一个资源对应于一个控制器,控制器管理器负责管理这些控制器。 kube-scheduler

根据调度算法选择新创建的Pod的节点。 任何部署都可以部署到同一个节点,也可以部署到不同的节点。 etcd

Pod、Service等对象信息Node组件

kubelet

kubelet是主节点上的代理,用于管理容器运行的本机生命周期,包括创建容器、Pod装载数据卷、下载servlet以及获取容器和节点的状态kubelet将每个Pod转换为一系列容器kube-proxy

在节点上安装Pod网络代理,维护网络规则和4层负荷分散工作docker或rocket

集装箱引擎,集装箱4,k8s核心理念Pod

最小部署单元容器集一个Pod中的容器共享网络命名空间Pod为Controllers

ReplicaSet :确保预期的Pod拷贝数Deployment :部署无状态APP集:部署有状态APP集:所有节点都是同一个Pod作业的一次性任务Cronjob

防止Pod联合的一组Pod的访问策略Lable :定义标签并附加到资源,用于对象关联、查询和过滤的Namespaces :命名空间、逻辑隔离对象的Annotations 自签名SSL证书组件使用的证书etcdca.pem、server.pem、server-key.pemflannelca.pem、server.pem、server-key.PEM kube-apape server-key.key kube-proxy.pem、kube-proxy-key.pemkubectlca.PEM、admin.pem、admin-key.pem三、k8s三种配置方式

Minikube是一种可以在本地快速运行Kubernetes的工具,只有Kubernetes和尝试进行日常开发的用户才能使用kubeadm

Kubeadm还是一个提供kubeadm init和kubeadm join的工具,用于快速部署Kubernetes群集二进制软件包

建议您下载官方发布的二进制软件包,然后手动部署每个组件。 在配置Kubernetes群集的生产环境中,使用kubeadm和二进制安装4、k8s单节点部署(etcd )Service

strong>

Master:192.168.223.10/24 kube-apiserver kube-controller-manager kube-scheduler etcdNode01:192.168.223.20/24 kubelet kube-proxy docker flannel etcdNode02:192.168.223.30/24 kubelet kube-proxy docker flannel etcd

master操作:

[root@localhost ~]# mkdir k8s[root@localhost ~]# cd k8s/[root@localhost k8s]# ls #从宿主机拖进来etcd-cert.sh etcd.sh[root@localhost k8s]# mkdir etcd-cert[root@localhost k8s]# mv etcd-cert.sh etcd-cert

下载证书制作工具:

[root@localhost k8s]# vim cfssl.shcurl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/xdddts/cfsslcurl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/xdddts/cfssljsoncurl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/xdddts/cfssl-certinfochmod +x /usr/local/xdddts/cfssl /usr/local/xdddts/cfssljson /usr/local/xdddts/cfssl-certinfo[root@localhost k8s]# bash cfssl.sh#下载cfssl官方包如果有证书制作工具的[root@localhost k8s]# cd /usr/local/xdddts/#宿主机直接拖进此目录cfssl cfssl-certinfo cfssljson[root@localhost k8s]# chmod + /usr/local/xdddts/*

开始制作证书:
cfssl 生成证书工具 cfssljson通过传入json文件生成证书 cfssl-certinfo查看证书信息

[root@localhost k8s]# cd etcd-cert/cat > ca-config.json <<EOF#定义ca证书{ "signing": { "default": { "expiry": "87600h" }, "profiles": { "www": { "expiry": "87600h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] } } }}EOF cat > ca-csr.json <<EOF #实现证书签名{ "CN": "etcd CA", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "Beijing", "ST": "Beijing" } ]}EOFcfssl gencert -initca ca-csr.json | cfssljson -bare ca - #生产证书,生成ca-key.pem ca.pemcat > server-csr.json <<EOF#指定etcd三个节点之间的通信验证{ "CN": "etcd", "hosts": [ "192.168.241.20", "192.168.241.4", "192.168.241.3" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "BeiJing", "ST": "BeiJing" } ]}EOFcfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server#生成ETCD证书 server-key.pem server.pem

源码安装etcd:

[root@localhost k8s]# lsetcd-cert etcd.sh etcd-v3.3.10-linux-amd64.tar.gz[root@localhost k8s]# tar zxvf etcd-v3.3.10-linux-amd64.tar.gzetcd-cert etcd.sh etcd-v3.3.10-linux-amd64 etcd-v3.3.10-linux-amd64.tar.gz[root@localhost k8s]# mkdir /opt/etcd/{cfg,xdddts,ssl} -p #配置文件,命令文件,证书[root@localhost k8s]# cd etcd-v3.3.10-linux-amd64/[root@localhost etcd-v3.3.10-linux-amd64]# lsDocumentation etcd etcdctl README-etcdctl.md README.md READMEv2-etcdctl.md[root@localhost etcd-v3.3.10-linux-amd64]# mv etcd etcdctl /opt/etcd/xdddts/[root@localhost k8s]# cd etcd-cert/[root@localhost etcd-cert]# lsca-config.json ca.csr ca-csr.json ca-key.pem ca.pem etcd-cert.sh server.csr server-csr.json server-key.pem server.pem[root@localhost etcd-cert]# mv *.pem /opt/etcd/ssl#证书拷贝[root@localhost k8s]# bash etcd.sh etcd01 192.168.223.10 etcd02=https://192.168.223.20:2380,etcd03=https://192.168.223.30:2380#进入卡住状态等待其他节点加入[root@localhost ~]# ps -ef | grep etcd#使用另外一个会话打开,会发现etcd进程已经开启

将证书和启动脚本推送/复制到两台node节点中

[root@localhost k8s]# scp -r /opt/etcd/ root@192.168.223.20:/opt/#拷贝证书去其他节点[root@localhost k8s]# scp -r /opt/etcd/ root@192.168.223.30:/opt#拷贝证书去其他节点[root@localhost k8s]# scp /usr/lib/systemd/system/etcd.service root@192.168.223.20:/usr/lib/systemd/system/#启动脚本拷贝其他节点[root@localhost k8s]# scp /usr/lib/systemd/system/etcd.service root@192.168.223.30:/usr/lib/systemd/system/#启动脚本拷贝其他节点

在node01和node02节点修改

[root@localhost ~]# vim /opt/etcd/cfg/etcd#[Member]ETCD_NAME="etcd02"ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="https://192.168.223.20:2380"#ip地址修改对应的node节点ETCD_LISTEN_CLIENT_URLS="https://192.168.223.20:2379"#ip地址修改对应的node节点#[Clustering]ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.223.30:2380"#ip地址修改对应的node节点ETCD_ADVERTISE_CLIENT_URLS="https://192.168.223.30:2379"#ip地址修改对应的node节点ETCD_INITIAL_CLUSTER="etcd01=https://192.168.241.20:2380,etcd02=https://192.168.241.4:2380,etcd03=https://192.168.241.3:2380"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"ETCD_INITIAL_CLUSTER_STATE="new"[root@localhost ssl]# systemctl start etcd[root@localhost ssl]# systemctl enable etcd[root@localhost ssl]# systemctl status etcd

在Master检查集群状态
检查群集状态(需要在有证书的目录下使用此命令)

[root@localhost ~]# cd /opt/etcd/ssl[root@localhost ~]# /opt/etcd/xdddts/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.223:10:2379,https://192.168.223.20:2379,https://192.168.223.30:2379" cluster-health


etcd部署完毕

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。