k8s单节点改为高可用和更新证书
- master单节点添加master节点
- apiServer添加域名更新证书
- 更新kubenertes证书有效期
环境
kubernetes v1.22.12
使用kubeadm安装的集群
#添加节点
#生成节点添加token(在master运行)
#创建join token. Create join token
kubeadm token create --print-join-command
#kubeadm join IP:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
#创建用于添加master节点的证书. Create certificate-key for add master node
kubeadm init phase upload-certs --upload-certs
#添加节点(在添加节点运行)
#安装kubelet
export Ver=1.22.12 #与master版本一致
curl -s http://elvin.vip/ks/k8s/kubelet.sh |bash
#查看往期快速创建k8s文章 https://www.cnblogs.com/elvi/p/8976305.html
#添加node节点
#添加node节点,运行上面生成的
kubeadm join IP:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
#添加master节点
#添加master节点,添加上面创建的certificate-key
kubeadm join IP:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx \
--control-plane --certificate-key xxx
#master节点配置kubectl凭证
mkdir -p $HOME/.kube
ln -fs /etc/kubernetes/admin.conf $HOME/.kube/config
#node lable
kubectl label node $(hostname) node-role.kubernetes.io/master=
#view nodes
kubectl get nodes
#添加Endpoint
若添加master节点报错且有如下提示,则需要添加Endpoint
Please ensure that:
* The cluster has a stable controlPlaneEndpoint address.
* The certificates that must be shared among control plane instances are provided.
master单节点添加master节点报错提示没controlPlaneEndpoint
Endpoint地址需要添加到apiServer证书认证地址里
为保证Endpoint能被新节点能访问,可使用7层代理、DNS轮询或添加到hosts解析
单节点添加master节点后保证Endpoint高可用, 即达到master节点高可用
#echo "masterIP myk8s.api.io" >>/etc/hosts
#查看kubeadm-config
kubectl -n kube-system get cm kubeadm-config -o yaml
#修改kubeadm-config,添加如 controlPlaneEndpoint: myk8s.api.io:6443
kubectl edit cm kubeadm-config -n kube-system
#添加位置,与版本号缩进一致
controlPlaneEndpoint: myk8s.api.io:6443
kubernetesVersion: v1.22.12
#添加域名更新apiServer证书
添加Endpoint使用域名或IP后,需要更新证书
域名或IP添加到certSANs部分,如下
apiVersion: v1
data:
ClusterConfiguration: |
apiServer:
certSANs:
- myk8s.api.io
certificatesDir: /etc/kubernetes/pki
controlPlaneEndpoint: myk8s.api.io:6443
kubernetesVersion: v1.22.12
#导出kubeadm配置
kubectl -n kube-system get configmap kubeadm-config \
-o jsonpath='{.data.ClusterConfiguration}' > kubeadm-init.yaml
#查看配置
cat kubeadm-init.yaml
#创建新的apiServer证书
#移除apiserver证书
mv /etc/kubernetes/pki/apiserver.{crt,key} /tmp/
#创建新的apiserver证书
kubeadm init phase certs apiserver --config kubeadm-init.yaml
#查看证书包含的域名和IP
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text |grep DNS
#重启apiserver生效
docker ps |awk '/kube-apiserver/{print $1}' |xargs docker restart
#更新kubenertes证书有效期
#查看有效期
kubeadm certs check-expiration
#更新有效期
kubeadm certs renew all
#重启服务生效
docker ps |awk '/k8s_kube-|etcd/{print $1}' |xargs docker restart
k8s单节点改为高可用和更新证书的更多相关文章
- ASP.NET Core on K8S学习初探(1)K8S单节点环境搭建
当近期的一个App上线后,发现目前的docker实例(应用服务BFF+中台服务+工具服务)已经很多了,而我司目前没有专业的运维人员,发现运维的成本逐渐开始上来,所以容器编排也就需要提上议程.因此我决定 ...
- 013.Kubernetes二进制部署worker节点Nginx实现高可用
一 Nginx代理实现kube-apiserver高可用 1.1 Nginx实现高可用 基于 nginx 代理的 kube-apiserver 高可用方案. 控制节点的 kube-controller ...
- 纯手工搭建K8s(单节点)
准备说明: 因为为纯手动搭建,所以针对安装时需要的一些安装包需提前下载好 cfssl_linux-amd64. cfssljson_linux-amd64. cfssl-certinfo_linux- ...
- springcloud微服务多节点高性能、高可用、高并发部署
1. 共有三个服务 discovery服务,domain服务,gateway服务. discovery服务是用来注册其他服务的,作为服务治理用. domain服务是主业务服务. gateway服务是所 ...
- ubuntu18.04使用kubeadm部署k8s单节点
实验目的: 体验kubeadm部署k8s服务,全流程体验! 实验环境: ubuntu18.04 联网在线部署 kubeadm 01.系统检查 节点主机名唯一,建议写入/etc/hosts 禁止swap ...
- Pod在多可用区worker节点上的高可用部署
一. 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可 ...
- 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群
1. 部署keepalived - apiserver高可用(任选两个master节点) 1.1 安装keepalived # 在两个主节点上安装keepalived(一主一备) $ yum inst ...
- k8s单节点集群部署应用
之所以用k8s来部署应用,就是因为k8s可以灵活的控制集群规模,进行扩充或者收缩.生产上我们要配置的参数较多,命令行的方式显然不能满足需求,我们应该使用基于配置文件的方式.接下来做一个部署的demo: ...
- Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记
目录 二进制Metrics&Dashboard安装 二进制高可用集群可用性验证 生产环境k8s集群关键性配置 Bootstrapping: Kubelet启动过程 Bootstrapping: ...
- centos7使用kubeadm配置高可用k8s集群
CountingStars_ 关注 2018.08.12 09:06* 字数 464 阅读 88评论 0喜欢 0 简介 使用kubeadm配置多master节点,实现高可用. 安装 实验环境说明 实验 ...
随机推荐
- 为什么用 AWS CLI?因为我懒得点鼠标!
在这篇博客中,我们一起深入探索 AWS CLI 的世界,从零开始,逐步构建在云端的家园.将介绍 AWS CLI 的基本功能和使用场景,如何创建 IAM 用户.VPC.子网.安全组.EC2 实例等,甚至 ...
- Serilog文档翻译系列(七) - 应用设置、调试和诊断、开发接收器
01.应用设置 Serilog 支持在 App.config 和 Web.config 文件中使用简单的 配置语法,以设置最低日志级别.为事件添加额外属性以及控制日志输出. Serilog 主要通过代 ...
- USB TCPM
USB TCPM(Type-C Port Manager)的主要作用是管理 USB Type-C 端口的连接和电源传输协议(USB Power Delivery, PD),确保设备正确识别.协商和切换 ...
- argmax经过sigmoid和不经过sigmoid区别
起因 今天和同组讨论了一下网络输出时,在torch.argmax之前经过torch.sigmoid和不经过sigmoid的区别. 主要起因是实验结果图像不同 图1 不经过sigmoid 图2 经过si ...
- Nuxt.js 应用中的 page:transition:finish 钩子详解
title: Nuxt.js 应用中的 page:transition:finish 钩子详解 date: 2024/10/10 updated: 2024/10/10 author: cmdrago ...
- 玩玩虚拟化-KVM
1.讲在前面(玩这个的心历路程) 最近一段时间想玩一些集群之类的东西,学习搞一下K8s,集群啥的,但是我没有多台服务器,如果购买云服务器成本太高,后来想到了买台台式机弄点虚拟机来玩,于是我就在某鱼上淘 ...
- 权限控制 vue3
- CF1737D Ela and the Wiring Wizard
CF1737D Ela and the Wiring Wizard 题意简述 形象化的,对于一个边,我们可以做以下变换: 将一条边变为自环 将边的一个端点沿着其他边移动 总的来说,就是边的两个端点可以 ...
- Seralizable
class CSer { private String name; private int age; public CSer() { } public CSer(String name, int ag ...
- python报错:If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0
相关: https://stackoverflow.com/questions/72441758/typeerror-descriptors-cannot-not-be-created-directl ...