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节点,实现高可用. 安装 实验环境说明 实验 ...
随机推荐
- CentOS 7 下通过 Cython 编写 python 扩展
1. 安装 python 和 python-devel(没有后者,install 的时候会报错 "Scanners.c:21:20: fatal error: Python.h: No su ...
- dotnet封装一个配置工具类
using Microsoft.Extensions.Configuration; namespace web.tools; public class settingHelper { public s ...
- 04 统计语言模型(n元语言模型)
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- 什么是前后端分离应用(Full-stack Separation),想当然就会理解错
前后端分离应用指的是将应用的前端部分(用户界面与交互逻辑)和后端部分(业务逻辑.数据处理.服务器响应)拆分成独立的模块,各自通过 API 进行通信.这种架构设计的目的是提高开发效率.增强可扩展性和灵活 ...
- 枚举(C语言)
1.枚举定义 枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁,更易读. 枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性. 定义一个枚 ...
- pytest的conftest.py文件讲解
一.conftest.py的特点 1.可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture 2.conftest.py与运行的用 ...
- 识别指定window窗口的文本
1. 简单需求 通过图文识别读取一个指定window窗口的文本. 获取窗口句柄,截图保存成bitmap ,调用图文识别库. 测试结果是对中文下的识别不是特别好. 需要注意的是,tessdata要下载指 ...
- 负载均衡在web系统中的应用
在日常的架构设计与开发中,常用的负载均衡算法主要分为静态和动态两类.静态负载算法以固定的频率分配任务不考虑服务器的状态信息,如轮询法.随机法等:动态负载均衡算法以服务器的实时负载状态信息来决定任务的分 ...
- 2.8 忘记root账户密码怎么办?
Linux 的单用户模式有些类似 Windows 的安全模式,只启动最少的程序用于系统修复.在单用户模式(运行级别为 1)中,Linux 引导进入根 shell,网络被禁用,只有少数进程运行. 单用户 ...
- 接口自动化AES对称加密为什么密钥key是16位的?
对称加密AES,加密和解密的密钥是同一个 AES是一个分组加密算法,AES有三种密钥长度(128.192.256)比特,常用的是128比特,也就是16位 AES常用的加密模式有:ECB,ECB是将明文 ...