背景:node 节点 kubeadm reset 后 重新kubeadm join失败
问题关键字:x509: certificate has expired or is not yet valid
部署kubernetes node节点 kubernetes node 节点包含如下组件: Flanneld: 省略,参照之前部署的文档 Docker1.12.5: 省略,参照之前部署的文档 kubelet kube-proxy 目录和文件 我们再检查一下三个节点上,经过前几步操作已经生成的配置文件 # #master节点: # ls /etc/kubernetes/ssl admin-key.pem admin.pem ca-key.pem ca.pem kube-proxy-key.pem k
必须配置native.cgroupdriver,不配置这个步骤会导致kubelet启动失败
本地的虚拟机搭建的 Kubernetes 环境没有固定 IP,结果节点 IP 变了,当然最简单的方式是将节点重新固定回之前的 IP 地址,但是自己头铁想去修改下集群的 IP 地址,结果一路下来踩了好多坑,压根就没那么简单~
最开始通过Kubeadm静默黑盒(自动)来安装,为什么这么说呢因为我们是通过Kubeadm自动安装的,并不知道做了那些具体的操作。这也是为什么写这篇手动部署的原因,是为了让大家更好的了解下和体验下两者区别以及部署流程
使用kubeadm快速启用一个集群 ================= [图片] CentOS 配置YUM源 ============= cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=kubernetes baseurl=https://mirrors.ustc.edu.cn/kubernetes/yum/repos/kubernetes-el7-$basearch enabled=1 EOF setenforce 0 yum
可以看到执行了 kubeadm init 之后,貌似一直卡住 kubelet 这个进程的健康检查上,日志如下。
Kubernetes 1.24 是正式弃用 Dockershim 的版本,本文主要描述一下安装 Kubernetes 1.24 + containerd 1.6.6 作为 CRI 的集群,主要是采用包管理器的方式来安装,安装的流程也可以参考官方文档
在 node 节点上,kubelet 是需要对外提供服务的。在 k8s 中,调用 kubelet 服务的也只有 kube-apiserver。
Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时,签署证书是一件很繁琐的事情,因此有了TLS Bootstrapping机制,kubelet会以一个低权限用户自动向apiserver申请证书,kubelet的证书由apiserver动态签署。 认证大致工作流程如图所示:
本文档记录自己的学习历程! 创建 kubeconfig 文件 kubelet、kube-proxy 等 Node 机器上的进程与 Master 机器的 kube-apiserver 进程通信时需要认证和授权; kubernetes 1.4 开始支持由 kube-apiserver 为客户端生成 TLS 证书的 TLS Bootstrapping 功能,这样就不需要为每个客户端生成证书了;该功能当前仅支持为 kubelet 生成证书; 创建 TLS Bootstrapping Token Token auth
使用kubeadm初始化IPV4/IPV6集群 📷 图片 CentOS 配置YUM源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=kubernetes baseurl=https://mirrors.ustc.edu.cn/kubernetes/yum/repos/kubernetes-el7-$basearch enabled=1 EOF setenforce 0 yum install -y kubelet kubeadm
注1:因为本机资源的限制,我们可以让Master Node上兼任Worker Node角色。 注2:本篇不在 k8s-node1 上作为,下一篇就知道了。
k8s高可用架构解析,高可用Kubernetes集群规划,设置静态ip,请参考上一篇文章
这里我再说一遍 TLS Bootstrapping:算了下一篇吧,这里之所以要删除这两个文件,是因为要从 master 的 apiserver 重新生成,如果有东西在那边,会导致一些莫名其妙的后果,比方说 kubelet 起来了,但是从master 上扫描不到 node。
# kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
3.6.3 创建 kubelet bootstrapping kubeconfig 文件
Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动,关闭系统的Swap方法如下:
使用kubeadm初始化IPV4/IPV6集群 ======================= [图片] 图片 CentOS 配置YUM源 ============= cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=kubernetes baseurl=https://mirrors.ustc.edu.cn/kubernetes/yum/repos/kubernetes-el7-$basearch enabled=1 EOF s
本章是kubernetes系列教程第二篇,要深入学习kubernetes,首先需要有一个k8s环境,然而,受制硬件环境,网络环境等因素,要搭建一个环境有一定的困难,让很多初学者望而却步,本章主要介绍通过kubeadm安装工具部署kubernetes集群,考虑到国内网络限制,已将安装镜像通过跳板机下载到本地,方便大家离线安装。
部署 kubectl 工具,创建kubeconfig文件 kubectl是kubernetes的集群管理工具,任何节点通过kubetcl都可以管理整个k8s集群。 本文是在 master节点 部署,部署成功后会生成 /root/.kube/config 文件,kubectl就是通过这个获取 kube-apiserver 地址、证书、用户名等信息,所以这个文件需要保管好。 下载安装包 # cd # wget https://dl.k8s.io/v1.8.6/kubernetes-client-linux-a
通过安装 K8S,了解 K8S 的核心概念:控制面、CRI、CNI、Deployment、Service、sandbox 等,本文不仅包含安装流程,而且包含丰富的 Troubeshooting 实战,以及解释这背后发生了什么。
kulelet如果有token的方式做认证,只需要生成一次bootstrap-kubeconfig就可以了 生成的方式
(https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/bootstrap-tokens/)
本文在以下主机上操作部署k8s node k8s-node1:192.168.206.41 k8s-node2:192.168.206.42 k8s-node3:192.168.206.43
由于calico服务是所有节点都需要启动的,需要把这几个文件拷贝到每台服务器上 ** 通过主节点拷贝到102,103两台机器上
这两个pod的非安全端口没有开启,健康检查时报错,但是由于本身服务是正常的,只是健康检查的端口没启,所以不影响正常使用。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/107427.html原文链接:https://javaforall.cn
kubelet 运行在每个 worker 节点上,接收 kube-apiserver 发送的请求,管理 Pod 容器,执行交互式命令,如 exec、run、logs 等。
本文是在 master节点 部署,部署成功后会生成 /root/.kube/config 文件,kubectl就是通过这个获取 kube-apiserver 地址、证书、用户名等信息,所以这个文件需要保管好。
我们知道k8s的主机角色分为master、worknode,创建k8s集群首先需要初始化k8s的master节点。
安装kubelet 创建kubelet bootstrap kubeconfig文件
由于是云服务器,selinux、firewalld、swap都会默认关闭,iptables规则也会清空,所以仅需要配置下主机名、hosts文件以及配置下kubernetes的转发规则就好,如下:
部署 Node 节点 其它两个node节点,需要在两个节点都执行安装操作 下载文件 # wget https://download.docker.com/linux/static/stable/x86_64/docker-17.12.0-ce.tgz # tar zxvf docker-17.12.0-ce.tar # cp docker/docker* /usr/local/bin 配置启动docker cat > docker.service << EOF [Unit] Description=Do
kube.config 为 kubectl 的配置文件,包含访问 apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书
可以在http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/ 找到各版本kernel安装包
大家可以发现k8s所有组件都安装完成后集群状态还是NotReady,这里通过kubelet报错就会发现缺少网络组件,这里就不介绍了,详情可以看我另一篇文章。
报错内容如下: Failed to get system container stats for "/system.slice/kubelet.service": failed to get cgroup stats for "/system.slice/kubelet.service": failed to get container info for "/system.slice/kubelet.service": unknown container "/system.slice/kubelet.se
1. 前言 新增俩台node节点加进k8s集群。 2. 初始化 2.1 安装依赖包 以下操作均在所有机器操作 yum install -y epel-release conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget unzip net-tools fuse-devel fuse fuse-libs 2.2 关闭防火墙 systemctl stop firewalld systemctl disable
如果更改了k8s service的网段需要将coredns的serviceIP改成k8s service网段的第十个IP
昨天网络环境出了点问题,本地的虚拟机搭建的 Kubernetes 环境没有固定 IP,结果节点 IP 变了,当然最简单的方式是将节点重新固定回之前的 IP 地址,但是自己头铁想去修改下集群的 IP 地址,结果一路下来踩了好多坑,压根就没那么简单~
VMware创建7个vm,规格2cpu 2G mem 200G disk,一个NAT网卡
声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。 如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由 作者一经查实,马上删除。
细节参见官方文档:https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/
主要参考 https://github.com/opsnull/follow-me-install-kubernetes-cluster
在新版的Kubernetes中系统资源的采集均使用Metrics-server,可以通过Metrics采集节点和Pod的内存、磁盘、CPU和网络的使用率
在/etc/docker/daemon.json文件中加入“"exec-opts": ["native.cgroupdriver=systemd"]一行配置,重启docker跟清除一下kubeadm信息即可重新初始化。”
CSR是Certificate Signing Request的英文缩写,即证书签名请求文件
领取专属 10元无门槛券
手把手带您无忧上云