1、需求
目前开发环境和线上环境的k8s集群版本不统一,开发区的版本为v1.17.5,线上的版本为v1.16.3,为避免环境不统一而带来不必要的麻烦,现进行统一升级使版本进行统一化
2、背景概述
2.1、Kubernetes 1.18版本介绍
Kubernetes 1.18包含38个增强功能:其中15个功能已趋于稳定,beta版本中有11个,alpha版本中有12个。
Kubernetes 1.18是一个“完美”的版本。为了改善用户体验,我们在beta和 stable 功能改进方面进行了大量工作:增加新的开发和新功能。对alpha,beta和 stable 版进行几乎一样多的增强是一项伟大的成就。这说明,社区在提高Kubernetes的可靠性以及继续扩展其现有功能方面所做的巨大努力。
2.2、Kubernetes 1.18主要更新内容
Kubernetes拓扑管理器(Topology Manager ) 升级到Beta版
Serverside Apply引入Beta 2版本
使用IngressClass扩展Ingress,并用IngressClass替换不推荐使用的注释
SIG-CLI引入kubectl debug命令
Alpha版本引入Windows CSI
稳定特性💯
- 污点驱逐
- kubectl diff
- CSI块存储支持
- API Server 干运行
- 在CSI中传递Pod信息
- 支持树形vSphere Cloud Provider
- 为Windows工作负载支持GMSA
- 跳过非附加CSI卷
- PVC克隆
- 将kubectl软件包代码移至暂存
- Windows的RunAsUserName
- 适用于服务和端点的AppProtocol
- 扩展大页面功能(Hugepage Feature)
- 客户端签名重构,以标准化选项和上下文处理
- 节点本地DNS缓存
主要变化
发行说明
在我们的发行说明中查看Kubernetes 1.18发行版的完整详细信息。
可用性
Kubernetes 1.18可以在GitHub上下载。如果要开始使用Kubernetes,可以看看这些互动式教学或使用 kind.运行本地Kubernetes集群。你还可以使用kubeadm轻松安装1.18 。
3、部署前准备工作
3.1、初始化三台小主机部署一套与开发环境一样的集群
主机节点 docker-version
172.19.8.103 19.03.12 (master)
172.19.8.104 19.03.12
172.19.8.108 19.03.12
3.2、8.103作为master节点
##安装ansible
~]# yum install -y ansible
##host配置
~]# cat /etc/ansible/hosts
[jcrke]
172.19.8.103
172.19.8.104
172.19.8.108
#批量
~]# ansible kub-all -m shell -a "usermod k8suser -G docker"
##rke安装 -v1.0.8
wget https://github.com/rancher/rke/releases/download/v1.0.8/rke_linux-amd64
chmod +x rke_linux-amd64
mv rke_linux-amd64 /bin/rke
##所有节点打通sshkey,此处省略
3.3、rke配置文件内容
nodes:
#master*3
- address: 172.19.8.103
user: k8suser
role:
- controlplane
- worker
- etcd
- address: 172.19.8.104
user: k8suser
role:
- controlplane
- worker
- etcd
labels: {app: ingress}
- address: 172.19.8.108
user: k8suser
role:
- controlplane
- worker
- etcd
labels: {app: ingress}
services:
etcd:
image: ""
extra_args: {}
extra_binds: []
extra_env: []
external_urls: []
ca_cert: ""
cert: ""
key: ""
path: ""
uid: 0
gid: 0
snapshot: null
retention: ""
creation: ""
backup_config: null
kube-api:
image: ""
extra_args: {}
extra_binds: []
extra_env: []
service_cluster_ip_range: 10.43.0.0/16
service_node_port_range: ""
pod_security_policy: false
always_pull_images: false
secrets_encryption_config: null
audit_log: null
admission_configuration: null
event_rate_limit: null
kube-controller:
image: ""
extra_args: {}
extra_binds: []
extra_env: []
cluster_cidr: 10.42.0.0/16
service_cluster_ip_range: 10.43.0.0/16
scheduler:
image: ""
extra_args: {}
extra_binds: []
extra_env: []
kubelet:
image: ""
extra_args: {}
extra_binds:
- "/usr/libexec/kubernetes/kubelet-plugins:/usr/libexec/kubernetes/kubelet-plugins"
- "/etc/iscsi:/etc/iscsi"
- "/usr/libexec/kubernetes/kubelet-plugins/volume/exec:/usr/libexec/kubernetes/kubelet-plugins/volume/exec"
extra_env: []
cluster_domain: cluster.local
infra_container_image: ""
cluster_dns_server: 10.43.0.10
fail_swap_on: false
generate_serving_certificate: false
kubeproxy:
image: ""
extra_args: {}
extra_binds: []
extra_env: []
network:
plugin: canal
options: {}
mtu: 0
node_selector: {}
authentication:
strategy: x509
sans:
- "1xx.19.xx.251"
- "jpxxx.xxxx.com"
webhook: null
addons: ""
addons_include: []
system_images:
etcd: rancher/coreos-etcd:v3.4.3-rancher1
alpine: rancher/rke-tools:v0.1.56
nginx_proxy: rancher/rke-tools:v0.1.56
cert_downloader: rancher/rke-tools:v0.1.56
kubernetes_services_sidecar: rancher/rke-tools:v0.1.56
kubedns: rancher/k8s-dns-kube-dns:1.15.0
dnsmasq: rancher/k8s-dns-dnsmasq-nanny:1.15.0
kubedns_sidecar: rancher/k8s-dns-sidecar:1.15.0
kubedns_autoscaler: rancher/cluster-proportional-autoscaler:1.7.1
coredns: rancher/coredns-coredns:1.6.5
coredns_autoscaler: rancher/cluster-proportional-autoscaler:1.7.1
nodelocal: rancher/k8s-dns-node-cache:1.15.7
kubernetes: rancher/hyperkube:v1.17.5-rancher1
flannel: rancher/coreos-flannel:v0.11.0-rancher1
flannel_cni: rancher/flannel-cni:v0.3.0-rancher5
calico_node: rancher/calico-node:v3.13.0
calico_cni: rancher/calico-cni:v3.13.0
calico_controllers: rancher/calico-kube-controllers:v3.13.0
calico_ctl: rancher/calico-ctl:v2.0.0
calico_flexvol: rancher/calico-pod2daemon-flexvol:v3.13.0
canal_node: rancher/calico-node:v3.13.0
canal_cni: rancher/calico-cni:v3.13.0
canal_flannel: rancher/coreos-flannel:v0.11.0
canal_flexvol: rancher/calico-pod2daemon-flexvol:v3.13.0
weave_node: weaveworks/weave-kube:2.5.2
weave_cni: weaveworks/weave-npc:2.5.2
pod_infra_container: rancher/pause:3.1
ingress: rancher/nginx-ingress-controller:nginx-0.25.1-rancher1
ingress_backend: rancher/nginx-ingress-controller-defaultbackend:1.5-rancher1
metrics_server: rancher/metrics-server:v0.3.6
windows_pod_infra_container: rancher/kubelet-pause:v0.1.3
ssh_key_path: ~/.ssh/id_rsa
ssh_cert_path: ""
ssh_agent_auth: false
authorization:
mode: rbac
options: {}
ignore_docker_version: false
kubernetes_version: ""
private_registries: []
ingress:
provider: ""
options: {}
node_selector: {app: ingress}
extra_args: {}
dns_policy: ""
extra_envs: []
extra_volumes: []
extra_volume_mounts: []
cluster_name: ""
cloud_provider:
name: ""
prefix_path: ""
addon_job_timeout: 0
bastion_host:
address: ""
port: ""
user: ""
ssh_key: ""
ssh_key_path: ""
ssh_cert: ""
ssh_cert_path: ""
monitoring:
provider: ""
options: {}
node_selector: {}
restore:
restore: false
snapshot_name: ""
dns: null
1.启动
su - k8suser
cd /etc/rke
rke up
2.检测集群状态
[root@172-19-8-103 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
172.19.8.103 Ready controlplane,etcd,worker 3m53s v1.17.5
172.19.8.104 Ready controlplane,etcd,worker 3m51s v1.17.5
172.19.8.108 Ready controlplane,etcd,worker 3m58s v1.17.5
4、升级
4.1、版本升级
RKE通过更改系统镜像的镜像版本来支持版本升级。
例如,要改变已部署Kubernetes版本,只需在部署Kubernetes集群的cluster.yml中,修改rancher/hyperkube
标签从v1.9.7到v1.10.3
,
原YAML
system-images:
kubernetes: rancher/hyperkube:v1.9.7
更新后YAML
system-images:
kubernetes: rancher/hyperkube:v1.18.3
在cluster.yml
配置文件更新后,执行rke up
升级Kubernetes。
1.升级rke为v1.1.3
https://github.com/rancher/rke/releases/download/v1.1.3/rke_linux-amd64
chmod +x rke_linux-amd64
##备份之前的rke命令进行替换
mv rke_linux-amd64 /bin/rke
##查看可用版本
rke config --system-images --all |grep hyperkube
2.修改后的完整配置如下
system_images:
etcd: rancher/coreos-etcd:v3.4.3-rancher1
alpine: rancher/rke-tools:v0.1.58
nginx_proxy: rancher/rke-tools:v0.1.58
cert_downloader: rancher/rke-tools:v0.1.58
kubernetes_services_sidecar: rancher/rke-tools:v0.1.58
kubedns: rancher/k8s-dns-kube-dns:1.15.2
dnsmasq: rancher/k8s-dns-dnsmasq-nanny:1.15.2
kubedns_sidecar: rancher/k8s-dns-sidecar:1.15.2
kubedns_autoscaler: rancher/cluster-proportional-autoscaler:1.7.1
coredns: rancher/coredns-coredns:1.6.9
coredns_autoscaler: rancher/cluster-proportional-autoscaler:1.7.1
nodelocal: rancher/k8s-dns-node-cache:1.15.7
kubernetes: rancher/hyperkube:v1.18.3-rancher2
flannel: rancher/coreos-flannel:v0.12.0
flannel_cni: rancher/flannel-cni:v0.3.0-rancher6
calico_node: rancher/calico-node:v3.13.4
calico_cni: rancher/calico-cni:v3.13.4
calico_controllers: rancher/calico-kube-controllers:v3.13.4
calico_ctl: rancher/calico-ctl:v3.13.4
calico_flexvol: rancher/calico-pod2daemon-flexvol:v3.13.4
canal_node: rancher/calico-node:v3.13.4
canal_cni: rancher/calico-cni:v3.13.4
canal_flannel: rancher/coreos-flannel:v0.12.0
canal_flexvol: rancher/calico-pod2daemon-flexvol:v3.13.4
weave_node: weaveworks/weave-kube:2.6.4
weave_cni: weaveworks/weave-npc:2.6.4
pod_infra_container: rancher/pause:3.1
ingress: rancher/nginx-ingress-controller:nginx-0.32.0-rancher1
ingress_backend: rancher/nginx-ingress-controller-defaultbackend:1.5-rancher1
metrics_server: rancher/metrics-server:v0.3.6
windows_pod_infra_container: rancher/kubelet-pause:v0.1.4
3.执行rke up
命令之后验证
[root@172-19-8-103 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
172.19.8.103 Ready controlplane,etcd,worker 81m v1.18.3
172.19.8.104 Ready controlplane,etcd,worker 80m v1.18.3
172.19.8.108 Ready controlplane,etcd,worker 81m v1.18.3
- 转载请注明来源:rke升级k8s集群
- 本文永久链接地址:https://www.xionghaier.cn/archives/1269.html