问题分析

master ip地址变更以后,我们首先应该检查以下内容:

  1. /etc/kubernetes/manifests下面的config配置文件,替换里面对应的ip

  2. 相关的证书文件

  3. 客户端文件

解决步骤

准备config文件

如果环境能出国网则不用进行该步骤,此文件为kubeadm.config
使用该文件时候注意替换相关的API地址和端口等信息

apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 100.64.139.62
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: k8s-master-2
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
kind: ClusterConfiguration
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kubernetesVersion: v1.16.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
scheduler: {}

修改配置文件

[root@k8s-master-2 kubernetes]# cd /etc/kubernetes
[root@k8s-master-2 kubernetes]# find . -type f |xargs grep 100.64.139.60 |awk '{print $1}' |sort |uniq
./admin.conf:
./controller-manager.conf:
./kubelet.conf:
./manifests/etcd.yaml:
./manifests/kube-apiserver.yaml:
./scheduler.conf:

其中几个conf文件为kubeadm自动生成的带证书的客户端配置文件,需要修改的为etcd.yaml,kube-apiserver.yaml两个配置文件。将里面对应的ip地址修改为新的ip地址。

生成新证书

方法一:部分删除生成证书

备份原始证书,根据find命令的输出,以下相关的服务证书需要更换kubelt api proxy

# 备份原始证书

mv /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.old
mv /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.old
mv /etc/kubernetes/pki/apiserver-kubelet-client.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt.old
mv /etc/kubernetes/pki/apiserver-kubelet-client.key /etc/kubernetes/pki/apiserver-kubelet-client.key.old
mv /etc/kubernetes/pki/front-proxy-client.crt /etc/kubernetes/pki/front-proxy-client.crt.old
mv /etc/kubernetes/pki/front-proxy-client.key /etc/kubernetes/pki/front-proxy-client.key.old

 

# 生成新证书

kubeadm init  phase certs apiserver --config kubeadm.config
kubeadm init phase certs apiserver-kubelet-client --config kubeadm.config
kubeadm init phase certs front-proxy-client --config kubeadm.config

kubeadm init phase certs apiserver --config kubeadm.config
kubeadm init phase certs apiserver-kubelet-client --config kubeadm.config
kubeadm init phase certs front-proxy-client --config kubeadm.config

方法二:全部删除生成证书

# 全部删除证书
mv /etc/kubernetes/pki  /etc/kubernetes/pki.old

# 生成新证书
kubeadm init  phase certs all --config kubeadm.config

生成新的客户端文件

方法一:分步骤生成

kubeadm  init phase kubeconfig admin --config kubeadm.config
kubeadm init phase kubeconfig controller-manager --config kubeadm.config
kubeadm init phase kubeconfig kubelet --config kubeadm.config
kubeadm init phase kubeconfig scheduler --config kubeadm.config

方法二:一次全部生成

mv /etc/kubernetes/*.conf /tmp
kubeadm init phase kubeconfig all --config kubeadm.config

查看证书过期时间

[root@k8s-master-2 pki]# kubeadm  alpha  certs check-expiration
CERTIFICATE EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
admin.conf Dec 10, 2020 05:31 UTC 364d no
apiserver Dec 10, 2020 05:30 UTC 364d no
apiserver-etcd-client Dec 10, 2020 05:31 UTC 364d no
apiserver-kubelet-client Dec 10, 2020 05:30 UTC 364d no
controller-manager.conf Dec 10, 2020 05:31 UTC 364d no
etcd-healthcheck-client Dec 10, 2020 05:31 UTC 364d no
etcd-peer Dec 10, 2020 05:31 UTC 364d no
etcd-server Dec 10, 2020 05:30 UTC 364d no
front-proxy-client Dec 10, 2020 05:30 UTC 364d no
scheduler.conf Dec 10, 2020 05:31 UTC 364d no

重启服务

service docker restart
service kubelet restart

kubernetes master 更换ip(单节点)的更多相关文章

  1. kubernetes系列:(二)、kubernetes部署mysql(单节点)

    使用kubeadm搭建好kubernetes集群后就可以动手部署自己的应用了. 本文用例来自官网,如有需要请参看 kubernetes官网 一.环境说明 kubernetes 1.13.1 docke ...

  2. k8s集群节点更换ip 或者 k8s集群添加新节点

    1.需求情景:机房网络调整,突然要回收我k8s集群上一台node节点机器的ip,并调予新的ip到这台机器上,所以有了k8s集群节点更换ip一说:同时,k8s集群节点更换ip也相当于k8s集群添加新节点 ...

  3. kubernetes环境部署单节点redis

    kubernetes部署redis数据库(单节点) redis简介 Redis 是我们常用的非关系型数据库,在项目开发.测试.部署到生成环境时,经常需要部署一套 Redis 来对数据进行缓存.这里介绍 ...

  4. Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)

    0. 前言 最近受“新冠肺炎”疫情影响,在家等着,入职暂时延后,在家里办公和学习 尝试通过源码编译二进制的方式在单一节点(Master 与 Node 部署在同一个机器上)上部署一个 k8s 环境,整理 ...

  5. kubernetes 单节点和多节点环境搭建

    kubernetes单节点环境搭建: 1.在VMWare Workstation中建立一个centos 7虚拟机.虚拟机的配置尽量调大一些 2.操作系统安装完成后,关闭centos 自带的防火墙服务 ...

  6. 手动部署一个单节点kubernetes

    目录 简要说明 安装环境说明 部署 生成相关证书 证书类型说明 安装cfssl证书生成工具 生成CA证书 生成Kubernetes master节点使用的证书 生成kubectl证书 生成kube-p ...

  7. Kubernetes Master节点灾备恢复操作指南---升级版

    本文档简述了Kubernetes主节点灾备恢复的相关步骤,供在发生k8s master崩溃时操作. 就算是在k8s里部署了etcd群集, 主节点控制组件的高可用节点,灾备恢复也是必须要实现的操作,才能 ...

  8. 阿里云ECS单节点Kubernetes部署

    参考资料: kubernetes官网英文版 kubernetes官网中文版 环境.工具 阿里云学生机ECS.Ubuntu.docker.kubectl1.15.4.kubelet1.15.4.kube ...

  9. 阿里云ECS(Ubuntu)单节点Kubernetes部署

    参考资料: kubernetes官网英文版 kubernetes官网中文版 前言 这篇文章是比较久之前写的了,无聊翻了下博客发现好几篇博文排版莫名其妙的变了... 于是修改并完善了下.当初刚玩k8s的 ...

随机推荐

  1. python_操作MySQL 初解

    单文件操作数据库 import random import threading, multiprocessing import time, datetime import pymysql import ...

  2. oracle常用函数(2)

    1) trunc函数,用于截断数字, 截断数字,用法为:trunc(n1,n2),n1表示要被截断的数字,n2表示要截断到那位,但是不会进行四舍五入. n2还可以表示负数,表示截断到小数点前,意思就是 ...

  3. js获取两个经纬度之间的角度(0度-360度)

    /** * 获取角度 */mapNumberUtil.getAngle = function(lng_a,lat_a, lng_b, lat_b){ var a = (90 - lat_b) * Ma ...

  4. c#委托(Delegates)--基本概念及使用

    在我这菜鸟理解上,委托就是可以用方法名调用另一方法的便捷方法,可以简化switch等语句的重复.最近做项目的时候恰好需要用到委托,便来复习及学习委托的使用.嗯...本人以前并没有用过,只是稍微知道而已 ...

  5. git和svn 及git使用&解决上线冲突

    一.svn git的工作流程 git 的工作流程图 二.git的基础使用 git 的安装 1.下载对应版本:https://git-scm.com/download 2.安装git:在选取安装路径的下 ...

  6. linux c 链接详解3-静态库

    3静态库 摘自:Linux C编程一站式学习 透过本节可以学会编译静态链接库的shell脚本! 有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库,我们在不同的程 ...

  7. DSP学习资料:基于6U VPX的 XC7VX690T+C6678的双FMC接口雷达通信处理板

    基于6U VPX的 XC7VX690T+C6678的双FMC接口雷达通信处理板   一.板卡概述 高性能VPX信号处理板基于标准6U VPX架构,提供两个标准FMC插槽,适用于电子对抗或雷达信号等领域 ...

  8. 裸机开发体验之led快速体验

    [root@promote led]# arm-linux-gcc -g -c led.S[root@promote led]# lsled.lds led.o led.S Makefile[root ...

  9. 【转】linux下 如何切换到root用户

    转自:https://www.cnblogs.com/xinjie10001/p/6295020.html 默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢? (1)sudo 命 ...

  10. 014-Zabbix的自动发现

    Zabbix自动发现是通过(1)网络扫描或(2)代理主动发现实现监控.本文主要介绍网络扫描的发现方式,并深入介绍底层监控项的主动发现功能. 网络发现(Discovery) 对于网络发现最需要理解的就是 ...