首页 > kubernetes(k8s) > RockyLinux二进制部署k8s1.23.3(二)
2022
02-18

RockyLinux二进制部署k8s1.23.3(二)

上文继续往下走

11、master 节点kubelet 部署

11.1 kubelet 生成bootstrap

生成bootstrap配置文件

创建bootstrap 授权文件

生成集群组件授权

11.2 创建kubelet bootstrap kubeconfig

server 使用kubelet 静态pod 启动 所以使用127.0.0.1访问api

分发到所有master节点:

11.3 提交bootstrap yaml 到集群

11.4 生成kubelet 配置文件

192.168.0.12节点:在k8s-master-1 节点上执行

kubelet config配置生成

从 v1.10 开始,部分 kubelet 参数需在配置文件中配置,kubelet –help 会提示:

创建 kubelet 参数配置文件模板(可配置项参考 代码中注释):

解析:

kubelet参数

192.168.0.13节点:在k8s-master-2 节点上执行

kubelet config配置生成

192.168.0.14节点:在k8s-master-3 节点上执行

kubelet config配置生成

11.5 kubelet systemd Unit 配置

分发到所有 master 节点:

11.6 启动 kubelet 服务

在k8s-master-1 k8s-master-2 k8s-master-3 节点上执行

11.7 检查启动结果

在k8s-master-1 k8s-master-2 k8s-master-3 节点上执行

确保状态为 active (running),否则查看日志,确认原因:

11.8 检查静态pod 是否启动

12、部署高可用 kube-controller-manager 集群

12.1 创建 kube-controller-manager 证书和私钥

创建证书签名请求:

  • hosts 列表包含所有 kube-controller-manager 节点 IP;
  • CN 和 O 均为 system:kube-controller-manager,kubernetes 内置的 ClusterRoleBindings system:kube-controller-manager 赋予 kube-controller-manager 工作所需的权限。

生成证书和私钥:

将生成的证书和私钥分发到所有 master 节点:

12.2 创建和分发 kubeconfig 文件

kube-controller-manager 使用 kubeconfig 文件访问 apiserver,该文件提供了 apiserver 地址、嵌入的 CA 证书和 kube-controller-manager 证书等信息:

  • kube-controller-manager 与 kube-apiserver 混布,故直接通过节点 IP 访问 kube-apiserver;

分发 kubeconfig 到所有 master 节点:

12.3 创建 kube-controller-manager 启动配置

参数解析:

kube-controller-manager参数

分发 kube-controller-manager 配置文件到所有 master 节点:

12.4 创建 kube-controller-manager systemd unit 文件

12.5 为各节点创建和分发 kube-controller-mananger systemd unit 文件

分发到所有 master 节点:

12.6 启动 kube-controller-manager 服务

k8s-master-1 k8s-master-2 k8s-master-3 节点上分别执行

12.7 检查服务运行状态

在k8s-master-1 k8s-master-2 k8s-master-3 节点上执行

确保状态为 active (running),否则查看日志,确认原因:

kube-controller-manager 监听 10257 端口,接收 https 请求:

12.8 查看当前的 leader

可见,当前的 leader 为 k8s-master-1 节点。

12.9 测试 kube-controller-manager 集群的高可用

13、部署高可用 kube-scheduler 集群

13.1 创建 kube-scheduler 证书和私钥

创建证书签名请求:

  • hosts 列表包含所有 kube-scheduler 节点 IP;
  • CN 和 O 均为 system:kube-scheduler,kubernetes 内置的 ClusterRoleBindings system:kube-scheduler 将赋予 kube-scheduler 工作所需的权限;

生成证书和私钥:

将生成的证书和私钥分发到所有 master 节点:

13.2 创建和分发 kubeconfig 文件

kube-scheduler 使用 kubeconfig 文件访问 apiserver,该文件提供了 apiserver 地址、嵌入的 CA 证书和 kube-scheduler 证书:

分发 kubeconfig 到所有 master 节点:

13.3 创建 kube-scheduler 配置文件

  • –kubeconfig:指定 kubeconfig 文件路径,kube-scheduler 使用它连接和验证 kube-apiserver;
  • –leader-elect=true:集群运行模式,启用选举功能;被选为 leader 的节点负责处理工作,其它节点为阻塞状态;

kube-scheduler参数

分发 kube-scheduler 配置文件到所有 master 节点:

13.4 创建 kube-scheduler systemd unit 模板文件

13.5 为各节点创建和分发 kube-scheduler systemd unit 文件

分发到所有 master 节点:

13.6 启动 kube-scheduler 服务

k8s-master-1 k8s-master-2 k8s-master-3 节点上分别执行

13.7 检查服务运行状态

k8s-master-1 k8s-master-2 k8s-master-3 节点上分别执行

确保状态为 active (running),否则查看日志,确认原因:

kube-scheduler 监听 10259 端口,接收 https 请求:

13.8 查看当前的 leader

可见,当前的 leader 为 k8s-master-1 节点。

13.9 测试 kube-scheduler 集群的高可用

14、node节点kubelet部署

配置使用master kubelet 配置

14.1 bootstrap kubeconfig 分发

分发到所有node节点:

14.2 生成配置文件

生成各node配置参考 11.4 生成kubelet 配置文件 ,主要修改以下参数为你的node节点参数即可

修改内容:

配置模板(修改后在各个节点分别执行)

分发 systemd unit 文件 到所有 node 节点:

14.3 启动 kubelet 服务

k8s-node-1 k8s-node-2 k8s-node-3 k8s-node-4 节点上执行

14.4 检查启动结果

k8s-node-1 k8s-node-2 k8s-node-3 k8s-node-4 节点上执行

确保状态为 active (running),否则查看日志,确认原因:

14.5 检查静态pod 是否启动

15、部署 kube-proxy 组件

15.1 创建 kube-proxy 证书

创建证书签名请求:

  • CN:指定该证书的 User 为 system:kube-proxy;
  • 预定义的 RoleBinding system:node-proxier 将User system:kube-proxy 与 Role system:node-proxier 绑定,该 Role 授予了调用 kube-apiserver Proxy 相关 API 的权限;
  • 该证书只会被 kube-proxy 当做 client 证书使用,所以 hosts 字段为空;

生成证书和私钥:

15.2 创建和分发 kubeconfig 文件

分发 kubeconfig 文件:

15.3 创建 kube-proxy 配置文件

从 v1.10 开始,kube-proxy 部分参数可以配置文件中配置。可以使用 –write-config-to 选项生成该配置文件,或者参考  源代码的注释。

创建 kube-proxy配置:
以 k8s-master-1 为例,其他节点依次修改此参数和kubelet一致并执行

修改以下参数为对应节点名字跟kubelet一致:

所有节点修改并执行

  • bindAddress: 监听地址;
  • clientConnection.kubeconfig: 连接 apiserver 的 kubeconfig 文件;
  • clusterCIDR: kube-proxy 根据 –cluster-cidr 判断集群内部和外部流量,指定 –cluster-cidr 或 –masquerade-all 选项后 kube-proxy 才会对访问 Service IP 的请求做 SNAT;
  • hostnameOverride: 参数值必须与 kubelet 的值一致,否则 kube-proxy 启动后会找不到该 Node,从而不会创建任何 ipvs 规则;
  • mode: 使用 ipvs 模式;

kube-proxy参数

15.4 创建和分发 kube-proxy systemd unit 文件

分发 kube-proxy systemd unit 文件:

15.5 启动 kube-proxy 服务

所有节点执行

15.6 检查启动结果

所有节点执行

确保状态为 active (running),否则查看日志,确认原因:

15.7 查看监听端口

  • 10249:http prometheus metrics port;
  • 10256:http healthz port;

15.8 查看 ipvs 路由规则

任意节点执行

预期输出:

可见所有通过 https 访问 K8S SVC kubernetes 的请求都转发到 kube-apiserver 节点的 5443 端口;

16、flannel 插件部署

官方地址

“Network”: “10.80.0.0/12” 改成kube-controller-manager 组件cluster-cidr 参数网段

16.2 部署 kube-flannel

16.3 查看pod 部署状态

16.4 查看节点网卡

16.5 查看集群节点状态

17、coredns 部署

17.1 生成部署yaml

  • clusterIP: 对应 kubelet kubelet.yaml 里面clusterDNS IP
  • cluster.local: 对应 对应 kubelet kubelet.yaml 里面 clusterDomain

17.2 部署 coredns

17.3 查看pod 部署状态

17.4 测试dns

可以看到,正常解析(完结)

最后编辑:
作者:shooter
这个作者貌似有点懒,什么都没有留下。