一 kubeadm token 命令
++++++++ "kubectl和kubeadm命令执行的时候" ++++++++默认情况下,kubectl 在 '$HOME/.kube' 目录下查找名为'config'的文件可以通过设置'KUBECONFIG环境变量'或设置'--kubeconfig参数'来指定其他Kubeconfig文件
解决1: k8s 'token 过期' 的解决方法
① 总概
② create
++++++++++ "背景铺垫" ++++++++++1、在 K8s '1.8+' 之后,'默认'生成的 Token 有效期只有 '24' 小时,过期后 token 将不可用2、如果想'新的 Node 节点'加入 K8s 集群,则需'重新生成'新的 token3、生产环境中我们一般都会采用'默认'的有效期即可,目的是为了 K8s 集群的'安全'
常见1: 生成默认 '24' 小时 Tokenkubeadm token list
常见2: 生成'永久有效'的Tokenkubeadm token list -ttl 0
常见3: 直接生成 Node '加入 K8s 集群'的完整命令,'worker'节点加入kubeadm token create --print-join-command -ttl 0备注: '永久有效'
证书过期的解决方案
常见4: 加入'master'节点kubeadm join ip:port --token ... --discovery-token-ca-cert-hash ... \--control-plane --certificate-key ...重点: '--certificate-key'如何获取? 说明: kubeadm init --config=kubeadm-config.yaml --upload-certs 初始化时会'回显'
会显信息
二 kubeadm join
说明: 获取 'CA 证书' Hash 值openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | \openssl rsa -pubin -outform der 2>/dev/null | \openssl dgst -sha256 -hex | sed 's/^.* //'
三 kubeadm init
① init干了什么事情
说明: 拉取'registry.k8s.io仓库'的镜像源失败--image-repository=registry.aliyuncs.com/google_containers# kubeadm init 指定的kubernetes版本为'不兼容'版本kubeadm init --kubernetes-version=1.22
常用: kubeadm init --config=kubeadm-config.yaml --upload-certs备注: 'kubeadm-config.yaml'是'kubeadm config print init-defaults' 生成的
② 常用
kubeadm init --apiserver-advertise-address=172.25.2.100 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.18.20 \ #版本号自选
--service-cidr=10.96.0.0/12 \ #可不改
--pod-network-cidr=10.244.0.0/16 #可不改初始化成功后显示:Your Kubernetes control-plane has initialized 'successfully!'
四 kubeadm config
① 总概
kubectl -n kube-system edit configmap kubeadm-config
② config images
说明: 由于'网络'原因,某些镜像'无法'下载,需要看下需要下载'哪些'镜像kubeadm config images list说明: 使用'自定义'镜像仓库拉取'init'所需的镜像kubeadm config images pull --config init-full-config.yaml说明: 一般镜像'提前下载'好
③ config print
需求2: 打印'默认'的init 配置文件kubeadm config print init-defaults > initconfig.yaml场景: 生成服务'清单','修改后'再指定关注: 'init-defaults'和'join-defaults'
④ config view 查看
五 kubeadm reset
kubeadm init 初始化集群操作'失败'的环境和配置遗留解决: 重置节点 'kubeadm reset'思考: 如何'删除'集群的一个'worker'节点
六 kubeadm appha certs
一年证书到期更换证书
说明: 查看证书命令下有'哪些'功能
⑥ check-expiration
kubeadm alpha certs check-expiration1、查看证书'过期'时间2、该命令显示'/etc/kubernetes/pki'文件夹中的客户端证书3、以及 kubeadm 使用的 'KUBECONFIG 文件中'嵌入的客户端证书的'到期时间/剩余时间'4、新版本命令:kubeadm certs check-expiration
⑦ renew
renew '说明': 更新 Kubernetes 集群的证书,'不涉及' CA 根证书 --> '续订k8s自签证书'说明: 生成'新的证书'之前最好'备份'一下数据cp -rp /etc/kubernetes /etc/kubernetes.bak cp -rp /var/lib/etcd /var/lib/etcd.bak
⑧ renew的选项
all: 更新'所有'可用证书,一般可以'直接使用'这个更新所有。
apiserver: 单独更新服务 Kubernetes API 的证书,相当于针对'单个组件'进行生成
apiserver-etcd-client: 更新 apiserver 用来访问 'etcd 的证书'
k8s证书配置过期时间 阳明更新证书
引申: 如果是'自建'集群,在init的时候最好把证书的有效期'修改'了