共计 3572 个字符,预计需要花费 9 分钟才能阅读完成。
背景:
继续降级过程:Kubernetes 1.16.15 降级到 1.17.17,Kubernetes 1.17.17 降级到 1.18.20,Kubernetes 1.18.20 降级到 1.19.12
集群配置:
主机名 | 零碎 | ip |
---|---|---|
k8s-vip | slb | 10.0.0.37 |
k8s-master-01 | centos7 | 10.0.0.41 |
k8s-master-02 | centos7 | 10.0.0.34 |
k8s-master-03 | centos7 | 10.0.0.26 |
k8s-node-01 | centos7 | 10.0.0.36 |
k8s-node-02 | centos7 | 10.0.0.83 |
k8s-node-03 | centos7 | 10.0.0.40 |
k8s-node-04 | centos7 | 10.0.0.49 |
k8s-node-05 | centos7 | 10.0.0.45 |
k8s-node-06 | centos7 | 10.0.0.18 |
1. 参考官网文档
参照:https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
2. 确认可降级版本与降级计划
yum list --showduplicates kubeadm --disableexcludes=kubernetes
通过以上命令查问到 1.20 以后最新版本是 1.20.9- 0 版本。master 有三个节点还是依照集体习惯先降级 k8s-master-03 节点
3. 降级 k8s-master-03 节点管制立体
仍然 k8s-master-03 执行:
1. yum 降级 kubernetes 插件
yum install kubeadm-1.20.9-0 kubelet-1.20.9-0 kubectl-1.20.9-0 --disableexcludes=kubernetes
2. 凌空节点查看集群是否能够降级
仍然算是复习 drain 命令:
kubectl drain k8s-master-03 --ignore-daemonsets
sudo kubeadm upgrade plan
3. 降级版本到 1.20.9
kubeadm upgrade apply 1.20.9
[root@k8s-master-03 ~]# sudo systemctl daemon-reload
[root@k8s-master-03 ~]# sudo systemctl restart kubelet
[root@k8s-master-03 ~]# kubectl uncordon k8s-master-03
node/k8s-master-03 uncordoned
[root@k8s-master-03 ~]# kubectl get nodes
[root@k8s-master-03 ~]# kubectl get pods -n kube-system
4. 降级其余管制立体(k8s-master-01 k8s-master-02)
yum install kubeadm-1.20.9-0 kubelet-1.20.9-0 kubectl-1.20.9-0 --disableexcludes=kubernetes
sudo kubeadm upgrade node
sudo systemctl daemon-reload
sudo systemctl restart kubelet
5. work 节点的降级
yum install kubeadm-1.20.9-0 kubelet-1.20.9-0 kubectl-1.20.9-0 --disableexcludes=kubernetes
sudo kubeadm upgrade node
sudo systemctl daemon-reload
sudo systemctl restart kubelet
注:集体都没有凌空节点,看集体需要了
6. 验证降级
kubectl get nodes
7. 其余——v1.20.0 中禁用了 selfLink
因为我的 Prometheus oprator 是 0.4 的分支,就筹备卸载重新安装了。版本差距太大了。当初也不想搞什么分支用了间接用主线版本了:
根本过程参照:Kubernetes 1.20.5 装置 Prometheus-Oprator。根本过程都没有问题,讲一个有问题的中央:
我的 kubernetes1.16 降级上来的这个集群 storageclass 是用的 nfs:
kubectl get sc
最初一
kubectl get pods -n monitoring
kubectl logs -f prometheus-operator-84dc795dc8-lkl5r -n monitoring
看关键词吧:
additional 貌似是主动发现的配置?
首先将 prometheus-prometheus.yaml 文件中的主动发现的配置正文掉。嗯服务还是没有起来,再看一眼日志:
kubectl logs -f prometheus-operator-84dc795dc8-lkl5r -n monitoring
没有什么新的输入,然而看一眼 pv,pvc 没有创立。去看一下 nfs 的 pod 日志:
kubectl get pods -n nfs
kubectl logs -f nfs-client-provisioner-6cb4f54cbc-wqqw9 -n nfs
class “managed-nfs-storage”: unexpected error getting claim reference: selfLink was empty, can’t make reference
百度 selfLink 参照:https://www.orchome.com/10024
批改三个 master 节点的 kube-apiserver.yaml
而后 pv,pvc 创立胜利 Prometheus 服务启动胜利。而后再回过头来看一眼我的 additional 主动发现配置:
我在 Kubernetes 1.20.5 装置 Prometheus-Oprator
拿我的老版本的这个文件试试?:
cat <<EOF > prometheus-additional.yaml
- job_name: 'kubernetes-service-endpoints'
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
action: replace
target_label: __scheme__
regex: (https?)
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
action: replace
target_label: __address__
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_service_name]
action: replace
target_label: kubernetes_name
EOF
kubectl delete secret additional-configs -n monitoring
kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml -n monitoring
再看日志启动起来了。初步先狐疑我配置文件中的 prometheus-additional.yaml 有问题。当然了这是集体问题了。强调的次要是 master 节点 kube-apiserver.yaml 文件的批改增加:
- --feature-gates=RemoveSelfLink=false