k8s集群环境修改ip地址后,如何恢复环境

说明:

该方法是通过kubeadm rest 方法进行恢复,比较适合自己搭建测试环境后,恢复测试使用,跟进自己的情况参看使用。
查询了部分参看文章,因为我部署时,使用的是

kubeadm init \
--apiserver-advertise-address=10.0.2.40 \
--image-repository registry.aliyuncs.com/google_containers 

进行部署的,不是通过kubeadm-config.yaml配置文件进行部署,本篇文章应该不算如何恢复环境,只能够是重新初始化k8s环境。

1. 理解说明:

1). 当集群ip发生变化后,k8s的master和node节点的通信就会有异常,因为之前的配置文件中,存储的ip地址都是旧的ip地址,所以当ip发生变化后,集群的master和node是无法感知到,所以就需要重新初始化环境,告知master和node节点。

2). 因为之前部署k8s环境,相关的yum源和工具,镜像源其实都已经下载安装完毕了,当集群ip被修改后,需要做的就是重新初始化环境,让master和node节点感知到ip变化了,需要重新进行通信协商。

2. 具体的操作说明:

1) 修改/etc/hosts的主机名称和IP的对应关系,好像初始化后,启动的etcd会和主机名对应上,具体细节暂未了解,但是需要修改。

2)删除# rm -rf $HOME/.kube(暂时不知道啥影响,推测是因为node和master协商通信会用到)

3)修改/etc/kubernetes/文件夹里的*.conf文件,把这些文件中有旧IP的地方全都替换成你的新IP(好像进行kubeadm reset的时候会清除掉,不修改也无所谓,但是我操作了)

4) 备份旧证书(好像没用,kubeadm reset好像会清除,kubeadm init初始化时,好像也会生成新的)

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

5)在master,node节点执行kubeadm reset,清除环境。

  • 运行这条命令将会还原当前节点上 kubeadm init 或者 kubeadm join 所做的所有更改。且如果使用外部 etcd,kubeadm reset 将不会删除任何 etcd 数据。这意味着如果再次使用相同的 etcd 节点运行 kubeadm init,你将看到以前的集群状态
  • 推测正常的修改IP的集群环境,不需要执行这个一步kubeadm reset,应该kubeadm init就可以,kubeadm reset有啥影响,暂时不确定,所以这一步,参看执行。

6)在master节点,执行kubeadm init命令,命令如下(节点保存kubeadm join 内容,后续node节点注册需要):

kubeadm init \
--apiserver-advertise-address=10.0.2.40 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.100.0.0/16 \
--pod-network-cidr=10.244.0.0/16
  • 执行kubeadm init 需要指定一下cluster Ip 网段和pod的IP网段,不然后续安装flannel时,master和node之前的网络通信可能会有异常,指定网段时,选择适合自己的网段,避免出现ip地址冲突。

7)执行完毕init后,执行一下(不确定有啥用):

mkdir -p $HOME/.kube 
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
chown $(id -u):$(id -g) $HOME/.kube/config

8)安装Pod网络插件(CNI)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

9)检查部署情况,所有pod都处于running状态:

 kubectl get pods -n kube-system

10) 在node节点上执行 kubeadm join(这个是在执行kubeadm init时生成的。)

kubeadm join 10.0.20.40:6443 --token ks0l71.ia2neg4uw00xxd3p \
   --discovery-token-ca-cert-hash sha256:56958d442a88b1c3c04fc37078bf264f243f752f8ec83a8eb387d5c825fb5104 

11)检查部署成功情况,我,所有的node节点和master节点都处于ready状态

[root@master kubernetes]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
242 Ready 74m v1.14.2
243 Ready 74m v1.14.2
master Ready master 83m v1.14.2

总结:

  • 安装上面的步骤把k8s的环境恢复,可以正常的通过yaml文件进行启动相关的容器业务,该方法只是进行参看,欢迎交流讨论。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Docker和Kubernetes是目前非常流行的容器化技术,可以帮助开发人员更好的构建、管理和部署应用程序。下面将介绍如何在一台主机上搭建Docker和Kubernetes集群环境,并部署分布式应用程序。 第一步是安装Docker和Kubernetes,安装方式根据不同的操作系统会略有不同。安装完成后,需要对Docker进行一些配置,让它可以将Docker镜像推送和拉取到Kubernetes集群中。这一步可以通过配置Docker的daemon.json文件来完成。 接下来,需要搭建Kubernetes集群。首先需要安装etcd,它是Kubernetes的数据存储后端。然后安装kubectl命令行工具,用于管理Kubernetes集群。 部署Kubernetes集群后,需要将应用程序打包成Docker镜像,并推送到Docker镜像仓库中。然后,通过编写Kubernetes的YAML文件来定义应用程序的部署方式、服务、副本等信息。最后,使用kubectl apply命令来将YAML文件应用到Kubernetes集群中,实现应用程序的部署和运行。 如果需要对应用程序进行扩容,可以通过kubectl scale命令来水平扩展副本数。如果需要对应用程序进行升级,可以通过修改YAML文件并使用kubectl apply命令来实现。 总之,通过搭建Docker和Kubernetes集群环境,我们可以更轻松、高效的构建、管理和部署分布式应用程序。 ### 回答2: Docker 和 Kubernetes 都是一些颇为流行的容器技术。Docker 以其轻量级和易于部署的特点受到许多人的青睐,而 Kubernetes 则是以其在容器编排和自动化部署上的能力而闻名。本文将介绍如何搭建 Docker 和 Kubernetes 集群环境,并演示如何在分布式应用程序上部署这些技术。 Docker 集群环境: 要搭建 Docker 集群环境,我们需要一个主节点和多个工作节点。可以在机器上安装 Docker 和 Docker Compose。使用 Docker Compose,我们可以轻松创建、启动和停止应用程序,同时便于管理容器。 当我们有多个 Docker 容器的时候,可以将它们放在不同的宿主机上,从而构建一个 Docker 集群。整个集群可以共享一个网络,这样我们就可以在不同的容器间通信。集群中每个节点都可以运行一个容器。这使得我们可以轻易地扩大我们的应用程序,并将它们部署到不同的机器上。 Kubernetes 集群环境: 要搭建 Kubernetes 集群环境,我们首先需要一个主节点和多个工作节点。要安装 Kubernetes 集群,我们可以使用 kubeadm 安装工具。Kubeadm 是一个命令行工具,它可以管理 Kubernetes 集群中的所有节点和服务。 在 Kubernetes 中,我们定义一组容器和服务,并将其称为一个应用程序,这个应用程序可以轻松地在 Kubernetes 集群中部署。Kubernetes 集群还提供了各种管理工具,可以监视应用程序的运行状态并处理故障。 分布式应用部署: 在分布式应用中,Docker 和 Kubernetes 都能够提供强大的支持。使用 Docker,我们可以打包我们的应用程序并将其部署到多个容器中。这样我们就可以轻松地扩大我们的应用程序,并将它们部署到不同的机器上。 使用 Kubernetes,我们可以轻松部署和管理分布式应用程序,同时可以自动地监视、管理和扩展我们的容器。我们可以定义一个 Kubernetes 应用程序对象,该对象将包含我们的容器化应用程序所需的所有配置和信息。 总的来说,Docker 和 Kubernetes 都是非常流行的容器技术,它们能够提供强大的支持,以便我们轻松地部署和管理我们的应用程序。无论你是在单个容器中运行应用程序,还是在整个集群中运行应用程序,这些技术都可以为你节省大量的时间和精力。 ### 回答3: Docker和Kubernetes(简称k8s)是两个广泛应用于容器化解决方案的开源工具。Docker和k8s的联合使用可以提供一个完整的,高度可靠和高度可扩展的容器平台,以便于分布式应用的部署和维护。在本文中,我们将探讨如何在Docker和k8s上搭建集群环境及分布式应用部署方案。 首先我们需要安装和配置好Docker和k8s环境,确保Docker和k8s能够正常工作。假设我们需要在三台机器上部署应用,我们需要在每台机器上安装Docker和k8s,每个Docker节点都要配置k8s本地存储,以保证数据的持久性和多副本数据备份。然后,我们需要在每个Kubernetes节点上部署一个Pod网络,使不同节点上的容器能够相互通信。 然后,我们需要编写Kubernetes 部署清单文件,并将它们发布到 Kubernetes 集群中。清单文件中应包含有关应用程序的必要配置信息,例如应用程序的容器镜像、环境变量、端口号、挂载点和资源请求/限制。我们可以使用Deployment,StatefulSet和DaemonSet三种资源类型来管理应用程序的部署和维护。使用这些资源类型可以实现高可靠性,自动化和灵活性的分布式应用部署和管理。 最后,我们可以使用Kubernetes的服务发现机制来暴露应用程序的服务,以便其他容器或服务可以访问它。这可以通过创建一个Kubernetes的service对象,并将其与应用程序的Pods关联起来来实现。Service对象可以提供一个常量的IP地址和DNS名称来代表应用程序的服务,并确保在容器出现故障时仍然可用。 综上所述,Docker和k8s组合可以提供一个强大的容器化解决方案,以及高度可靠和高度可扩展的平台来部署和维护分布式应用程式。在实践中,通过使用Docker和k8s,我们可以更轻松地部署,运行和管理复杂的应用程序,同时提高生产力和应用程序的可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值