一 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 集群,则需'重新生成'新的 token
3、生产环境中我们一般都会采用'默认'的有效期即可,目的是为了 K8s 集群的'安全'
常见1: 生成默认 '24' 小时 Token
kubeadm token list
常见2: 生成'永久有效'的Token
kubeadm 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/^.* //'
说明: 拉取'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-expiration
1、查看证书'过期'时间
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 的证书'
引申: 如果是'自建'集群,在init的时候最好把证书的有效期'修改'了