企业级k8s集群部署

企业级k8s集群部署,第1张

二进制包

注:推荐用二进制包部署Kubernetes集群,虽手动部署麻烦,但可以学习很多工作原理利于后期维护。

环境

可以使用VMware虚拟机,宿主机必须8G内存以上

• 服务器可以访问外网,有从网上拉取镜像的需求

单Master服务器规划:( 注:部署时候根据具体环境进行IP地址调整即可 )

这里使用3台组建集群,可容忍1台机器故障,当然,你也可以使用5台组建集群

etcd1: 192.168.3.110 etcd2: 192.168.3.112 etcd3: 192.168.3.113

cfssl是一个开源的证书管理工具,使用json文件生成证书,相比openssl更方便使用。

找任意一台服务器 *** 作,这里用Master节点

创建工作目录:

自签CA:

生成证书:

会生成ca.pem和ca-key.pem文件。

创建证书申请文件:

注:上述文件hosts字段中IP为所有etcd节点的集群内部通信IP,一个都不能少!为了方便后期扩容可以多写几个预留的IP。

生成证书:

会生成etcd.pem和春陵让etcd-key.pem文件。

https://github.com/etcd-io/etcd/releases/download/v3.5.1/ etcd-v3.5.1-linux-amd64.tar.gz

以下在节点1上 *** 作,然后将文件拷贝到其他集群机器

把刚才生成的证书拷贝到配置文件中的路径:

注意修改节点2和节点3分别etcd.conf配置,按照下面提示的修改

启动各节点的etcd服务

如果输出上面信息,就说明集群部署成功。

如果有问题看日志:/var/log/message

docker二进制下载地址:

https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz

注:使用yum安装也行

集群所有机器都安装docker

生成证扒局书:

会生成ca.pem和ca-key.pem文件。

创建证书申请文件:

生成证书:

会生成k8s.pem和k8s-key.pem文件。

下载地汪陆址参考:

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#downloads-for-v12013

Wget https://dl.k8s.io/v1.20.13/kubernetes-server-linux-amd64.tar.gz

把刚才生成的证书拷贝到配置文件中的路径:

TLS Bootstrapping 机制,对work-node加入进行自签证书用

创建上述配置文件中token文件:

token 可以自行生产,百度下怎么生产

kube-apiserver服务

生成kube-controller-manager证书:

生成kubeconfig文件(以下是shell命令,直接在终端执行):

生成kube-scheduler证书:

生成kubeconfig文件:

生成kubeconfig文件:

通过kubectl工具查看当前集群组件状态:

在所有worker node创建工作目录:

从master节点拷贝:

注:由于网络插件还没有部署,节点会没有准备就绪 NotReady

二进制包下载地址:https://github.com/containernetworking/plugins/releases

确保kubelet启用CNI:

在Master执行:

应用场景:例如kubectl logs

在Master节点将Worker Node涉及文件拷贝到新节点192.168.3.112/113

注:这几个文件是证书申请审批后自动生成的,每个Node不同,必须删除

Node2(192.168.3.113 )节点同上。记得修改主机名!

访问地址:https://NodeIP:30001

创建service account并绑定默认cluster-admin管理员集群角色:

使用输出的token登录Dashboard。

CoreDNS用于集群内部Service名称解析。

DNS解析测试:

这样 单Master集群就搭建完成了

1、创建csr请求文件,hosts 列表灶备包含所有 kube-scheduler 节点 IP;

CN为system:kube-scheduler、O 为 system:kube-scheduler,kubernetes 内置的 ClusterRoleBindings system:kube-scheduler 将赋予 kube-scheduler 工作所需的权限。

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

2、创建kube-scheduler的kubeconfig

设置集群参数

kubectl config set-cluster kubernetes --certificate-authority=ca.pem --embed-certs=true --server=https://135.251.205.109:6443 --kubeconfig=kube-scheduler.kubeconfig

设置客户端认证参数隐颤毁

kubectl config set-credentials system:kube-scheduler --client-certificate=kube-scheduler.pem --client-key=kube-scheduler-key.pem --embed-certs=true --kubeconfig=kube-scheduler.kubeconfig

设置上下文参数

kubectl config set-context system:kube-scheduler --cluster=kubernetes --user=system:kube-scheduler --kubeconfig=kube-scheduler.kubeconfig

设置默认上下文

kubectl config use-context system:kube-scheduler --kubeconfig=kube-scheduler.kubeconfig

3、创建配置文件

4、创建洞闷服务启动文件

5、启动服务

cp /root/k8sbinary/TLS/k8s/kube-scheduler.kubeconfig /etc/kubernetes

cp /root/k8sbinary/TLS/k8s/kube-scheduler*.pem /etc/kubernetes/ssl/

systemctl daemon-reload

systemctl enable kube-scheduler

systemctl start kube-scheduler

systemctl status kube-scheduler

systemctl daemon-reload &&systemctl restart kube-scheduler

Kubernetes 集群在服务器搭建部署成功之后,通常我们都会通过 kubectl 命令行工具与集群互动、发送 *** 作指令来管理集群。 kubectl 主要依赖于集群配置文件 kubeconfig 与集群进行通讯,这个文件通常在 Kubernetes 集群的 master 节点服务器的 $HOME/.kube/config 目录下。开发者可以从服务器获取改配置文件到开发者本地电脑上的相同目录位置上即可。

本篇文章主要介绍一下我们如何管理这个配置文件。如果熟悉 kubeconfig 文件的结构,读者当然可以使用文本编辑器自行修改,不过手工修改难免会有错误和不便。所以这里介绍一下如何利用 kubectl 工具来帮助我们管理和调整配置文件。

kubeconfig 是一个 Kubernetes 中的一个资源对象,叫做 Config , 内容格式是 YAML 。这个文件中主要包含了集群(郑敏clusters)、上下文(contexts)和用户(users)信息,他们的层次结构和关系如下图所示:

如图所示,上下文 context 是建立集群、用户和命名空间之间关系的桥梁和纽带,我们在本地切换所谓败丛袭的“环境”其实就是将一个指定的上下文为当前激活的上下文(current-context)。再通俗点讲,这个上下文指的就是你当前是以什么身份(user) 在连接哪个集群(cluster),连接后自动切换到哪一个命名空间(namespace)下。

kubectl 中的 config 子命令可以帮助我们维护存储在本地的配置文件,我们先来看下它的帮助说明:

这里简要说明一下config下几个主要的子命令察兄:

接下来我们列举一些常见的任务场景。

首先我们使用以下命令来看下集群 kubernetes 的 server 属性的值:

接下来我们是用 set-cluster 子命令来修改服务器的地址:

kubectl config 未直接提供的删除用户的子命令,所以我们找不到类似于 delete-user 之类的选项。不过我们可以使用 unset 子命令来完成这个任务:

建议大家使用 kubectl config 的方式来配置 kubeconfig 文件,避免了手工修改的麻烦和误配置之外,对于自动化管理也可以更加规范和统一。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12191330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存