suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件

2024-05-13 03:58

本文主要是介绍suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

        • 1.6、部署kube-apiserver
          • 1.6.0、创建kubernetes证书和私钥
          • 1.6.1、生成kubernetes证书和私钥
          • 1.6.2、创建metrics-server证书和私钥
          • 1.6.3、生成metrics-server证书和私钥
          • 1.6.4、配置kube-apiserver为systemctl管理
          • 1.6.5、配置bootstrap token文件
          • 1.6.6、分发kube-apiserver命令和秘钥等文件到其他节点
          • 1.6.7、启动kube-apiserver服务
          • 1.6.8、查看kube-apiserver写入etcd的数据
          • 1.6.9、检查kubernetes集群信息
          • 1.6.10、授权kubelet-bootstrap用户允许请求证书

  • suse 12 二进制部署 Kubernetes 集群系列合集:
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第00章 - 环境准备
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第01章 - 创建CA证书和kubectl集群管理命令
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第02章 - 部署etcd集群
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第03章 - 部署flannel插件
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第04章 - 部署docker服务
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第05章 - 部署kube-nginx
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第07章 - 部署kube-controller-manager组件
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第08章 - 部署kube-scheduler组件
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第09章 - 部署kubelet组件
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第10章 - 部署kube-proxy组件
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第11章 - 部署coredns组件
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第12章 - 部署dashboard插件
    • suse 12 二进制部署 Kubernetets 1.19.7 - 第13章 - 部署metrics-server插件
    • suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用
    • suse 12 二进制部署 Kubernetets 1.19.7 - 番外篇 - 增加node节点
1.6、部署kube-apiserver
  • 所有master节点需要kube-apiserver
  • kube-apiserver是无状态服务,需要通过kube-nginx进行代理访问,从而保证服务可用性
  • 部署kubectl的时候已经下载了完整的kubernetes二进制文件,因此kube-apiserver就无须下载了,等下脚本分发即可
1.6.0、创建kubernetes证书和私钥
k8s-01:~ # cd /opt/k8s/ssl/
k8s-01:/opt/k8s/ssl # source /opt/k8s/bin/k8s-env.sh
k8s-01:/opt/k8s/ssl # cat > kubernetes-csr.json <<EOF
{"CN": "kubernetes","hosts": ["127.0.0.1","192.168.72.39","192.168.72.40","192.168.72.41","${CLUSTER_KUBERNETES_SVC_IP}","kubernetes","kubernetes.default","kubernetes.default.svc","kubernetes.default.svc.cluster","kubernetes.default.svc.cluster.local"],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","ST": "ShangHai","L": "ShangHai","O": "k8s","OU": "bandian"}]
}
EOF
  • 需要将集群所有IP添加到证书内
1.6.1、生成kubernetes证书和私钥
k8s-01:/opt/k8s/ssl # cfssl gencert -ca=/opt/k8s/ssl/ca.pem \
-ca-key=/opt/k8s/ssl/ca-key.pem \
-config=/opt/k8s/ssl/ca-config.json \
-profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes
1.6.2、创建metrics-server证书和私钥
k8s-01:/opt/k8s/ssl # cat > metrics-server-csr.json <<EOF
{"CN": "aggregator","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","ST": "ShangHai","L": "ShangHai","O": "k8s","OU": "bandian"}]
}
EOF
1.6.3、生成metrics-server证书和私钥
k8s-01:/opt/k8s/ssl # cfssl gencert -ca=/opt/k8s/ssl/ca.pem \
-ca-key=/opt/k8s/ssl/ca-key.pem \
-config=/opt/k8s/ssl/ca-config.json \
-profile=kubernetes metrics-server-csr.json | cfssljson -bare metrics-server
1.6.4、配置kube-apiserver为systemctl管理
k8s-01:~ # cd /opt/k8s/conf/
k8s-01:/opt/k8s/conf # source /opt/k8s/bin/k8s-env.sh
k8s-01:/opt/k8s/conf # cat > kube-apiserver.service.template <<EOF
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target[Service]
WorkingDirectory=${K8S_DIR}/kube-apiserver
ExecStart=/opt/k8s/bin/kube-apiserver \\--v=2 \\--advertise-address=##NODE_IP## \\--secure-port=6443 \\--bind-address=##NODE_IP## \\--etcd-servers=${ETCD_ENDPOINTS} \\--allow-privileged=true \\--service-cluster-ip-range=${SERVICE_CIDR} \\--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \\--authorization-mode=RBAC,Node \\--enable-bootstrap-token-auth=true \\--token-auth-file=/etc/kubernetes/cert/token.csv \\--service-node-port-range=${NODE_PORT_RANGE} \\--kubelet-client-certificate=/etc/kubernetes/cert/kubernetes.pem \\--kubelet-client-key=/etc/kubernetes/cert/kubernetes-key.pem \\--tls-cert-file=/etc/kubernetes/cert/kubernetes.pem \\--tls-private-key-file=/etc/kubernetes/cert/kubernetes-key.pem \\--client-ca-file=/etc/kubernetes/cert/ca.pem \\--service-account-key-file=/etc/kubernetes/cert/ca.pem \\--etcd-cafile=/etc/kubernetes/cert/ca.pem \\--etcd-certfile=/etc/kubernetes/cert/kubernetes.pem \\--etcd-keyfile=/etc/kubernetes/cert/kubernetes-key.pem \\--audit-log-maxage=15 \\--audit-log-maxbackup=3 \\--audit-log-maxsize=100 \\--audit-log-truncate-enabled \\--audit-log-path=${K8S_DIR}/kube-apiserver/audit.log \\--proxy-client-cert-file=/etc/kubernetes/cert/metrics-server.pem \\--proxy-client-key-file=/etc/kubernetes/cert/metrics-server-key.pem \\--requestheader-client-ca-file=/etc/kubernetes/cert/ca.pem \\--requestheader-allowed-names=aggregator \\--requestheader-extra-headers-prefix="X-Remote-Extra-" \\--requestheader-group-headers=X-Remote-Group \\--requestheader-username-headers=X-Remote-UserRestart=on-failure
RestartSec=10
Type=notify
LimitNOFILE=65536[Install]
WantedBy=multi-user.target
EOF
  • --v 日志等级
  • --etcd-servers etcd集群地址
  • --bind-address 监听地址
  • --secure-port https安全端口
  • --advertise-address 集群通告地址
  • --allow-privileged 启用授权
  • --service-cluster-ip-range Service虚拟IP地址段
  • --enable-admission-plugins 准入控制模块
  • --authorization-mode 认证授权,启用RBAC授权和节点自管理
  • --enable-bootstrap-token-auth 启用TLS bootstrap机制
  • --token-auth-file bootstrap token文件
  • --service-node-port-range Service nodeport类型默认分配端口范围
  • --kubelet-client-xxx apiserver访问kubelet客户端证书
  • --tls-xxx-file apiserver https证书
  • --etcd-xxxfile 连接Etcd集群证书 --audit-log-xxx:审计日志
  • --requestheader-xxx-xxx 开启kube-apiserver的aggregation(hpa和metrics依赖aggregation)
  • --proxy-client-xxx 同上
1.6.5、配置bootstrap token文件
k8s-01:~ # cd /opt/k8s/ssl/
k8s-01:/opt/k8s/ssl # cat > token.csv <<EOF
404a083c42f5d39979fd731a24774b83,kubelet-bootstrap,10001,"system:node-bootstrapper"
EOF
  • bootstrap token文件格式
    • token用户名UID用户组
  • token生成方式
    • head -c 16 /dev/urandom | od -An -t x | tr -d ' '
1.6.6、分发kube-apiserver命令和秘钥等文件到其他节点
#!/usr/bin/env bash
source /opt/k8s/bin/k8s-env.sh# 替换模板文件
for (( i=0; i < 3; i++ ))
dosed -e "s/##NODE_IP##/${MASTER_IPS[i]}/" /opt/k8s/conf/kube-apiserver.service.template > \/opt/k8s/conf/kube-apiserver-${MASTER_IPS[i]}.service 
done# 分发到master节点
for host in ${MASTER_IPS[@]}
doprintf "\e[1;34m${host}\e[0m\n"scp /opt/k8s/packages/kubernetes/server/bin/{apiextensions-apiserver,kube-apiserver,kube-controller-manager,kube-proxy,kube-scheduler,kubeadm,kubelet,mounter} ${host}:/opt/k8s/bin/scp /opt/k8s/ssl/{kubernetes*.pem,token.csv} ${host}:/etc/kubernetes/cert/scp /opt/k8s/ssl/metrics-server*.pem ${host}:/etc/kubernetes/cert/scp /opt/k8s/conf/kube-apiserver-${host}.service ${host}:/etc/systemd/system/kube-apiserver.service
done# 分发到所有节点
for host_node in ${NODE_IPS[@]}
doprintf "\e[1;34m${host_node}\e[0m\n"scp /opt/k8s/packages/kubernetes/server/bin/{kubelet,kube-proxy} ${host_node}:/opt/k8s/bin/
done
1.6.7、启动kube-apiserver服务
#!/usr/bin/env bash
source /opt/k8s/bin/k8s-env.shfor host in ${MASTER_IPS[@]}
doprintf "\e[1;34m${host}\e[0m\n"ssh root@${host} "mkdir -p ${K8S_DIR}/kube-apiserver/"ssh root@${host} "systemctl daemon-reload && \systemctl enable kube-apiserver --now && \systemctl status kube-apiserver | grep Active"
done
  • 注:返回的如果是Active: activating (auto-restart),可以稍等一下,然后再次执行systemctl status kube-apiserver | grep Active,出现running就可以了,否则的话,需要查看日志journalctl -xeu kube-apiserver
1.6.8、查看kube-apiserver写入etcd的数据
k8s-01:~ # source /opt/k8s/bin/k8s-env.sh
k8s-01:~ # etcdctl \
--endpoints=${ETCD_ENDPOINTS} \
--cacert=/opt/k8s/ssl/ca.pem \
--cert=/opt/k8s/ssl/etcd.pem \
--key=/opt/k8s/ssl/etcd-key.pem \
get /registry/ --prefix --keys-only
1.6.9、检查kubernetes集群信息
k8s-01:~ # kubectl cluster-info
Kubernetes master is running at https://192.168.72.39:8443To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.k8s-01:~ # kubectl get all --all-namespaces
NAMESPACE   NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
default     service/kubernetes   ClusterIP   10.254.0.1   <none>        443/TCP   38sk8s-01:~ # kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS      MESSAGE                                                                                       ERROR
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused
controller-manager   Unhealthy   Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused
etcd-1               Healthy     {"health":"true"}                                                                        
etcd-2               Healthy     {"health":"true"}                                                                        
etcd-0               Healthy     {"health":"true"}
  • 注:如果有报错,检查一下~/.kube/config 的配置,以及证书是否正确
1.6.10、授权kubelet-bootstrap用户允许请求证书
k8s-01:~ # kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrole=system:kubelet-api-admin --user kubernetes

这篇关于suse 12 二进制部署 Kubernetets 1.19.7 - 第06章 - 部署kube-apiserver组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984623

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

如何将二进制文件流转化为MockMultipartFile文件

《如何将二进制文件流转化为MockMultipartFile文件》文章主要介绍了如何使用Spring框架中的MockMultipartFile类来模拟文件上传,并处理上传逻辑,包括获取二进制文件流、创... 目录一、名词解释及业务解释1.具体业务流程2.转换对象解释1. MockMultipartFile2

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus