zoukankan      html  css  js  c++  java
  • k8s集群升级

    前言:
      生产环境的k8s为了追求稳定,不能直接安装最新版本,随着新版本功能的稳定,很多新功能是老版本不具备的,这时进行一次稳妥的升级便是一个不错的选择。

    以升级k8s集群v1.13.3到v1.14.0为例

    升级次序:先升级master,后升级node
    升级之前的准备:确保已经备份了etcd数据库与master节点的状态

    升级master

    安装kubernetes的yum源

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
     
    name=Kubernetes repo
     
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
     
    gpgcheck=0
     
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
     
    enabled=1
    
    EOF
    
    yum makecache
    yum list --showduplicates kubeadm --disableexcludes=kubernetes
    # find the latest 1.14 version in the list
    # it should look like 1.14.x-0, where x is the latest patch
    

    安装v1.14.0的kubeadm与kubelet安装包

    yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 
    

    验证下载的包是否为期望的版本

    sudo kubeadm version
    
    期望输出
    kubeadm version: &version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:51:21Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
    

    验证集群是否可升级

    sudo kubeadm upgrade plan
    
    期望输出
    [preflight] Running pre-flight checks.
    [upgrade] Making sure the cluster is healthy:
    [upgrade/config] Making sure the configuration is correct:
    [upgrade/config] Reading configuration from the cluster...
    [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
    [upgrade] Fetching available versions to upgrade to
    [upgrade/versions] Cluster version: v1.13.3
    [upgrade/versions] kubeadm version: v1.14.0
    
    Awesome, you're up-to-date! Enjoy!
    
    

    执行升级

    sudo kubeadm upgrade apply v1.14.0
    交互界面输入y,确认升级
    期望输出
    [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.14.0". Enjoy!
    

    升级kubectl

    yum install -y  kubectl-1.14.0-0
    

    重启kubelet

    sudo systemctl daemon-reload && systemctl restart kubelet
    

    查看升级结果

    NAME        STATUS   ROLES    AGE   VERSION
    k8s-agent   Ready    <none>   66m   v1.13.3
    k8s-cp      Ready    master   69m   v1.14.0
    
    

    升级node

    安装kubernetes的yum源

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
     
    name=Kubernetes repo
     
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
     
    gpgcheck=0
     
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
     
    enabled=1
    
    EOF
    
    yum makecache
    

    安装v1.14.0的kubeadm与kubelet安装包

    yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0
    

    修改kubelet配置

    sudo kubeadm upgrade node config --kubelet-version v1.14.0
    

    升级kubectl

    yum install -y  kubectl-1.14.0-0 
    

    重启kubelet

    sudo systemctl daemon-reload && systemctl restart kubelet
    

    查看升级结果

    NAME        STATUS   ROLES    AGE   VERSION
    k8s-agent   Ready    <none>   70m   v1.14.0
    k8s-cp      Ready    master   73m   v1.14.0
    

    参考
    补充第一点:如果k8s使用的是动态调度,那么在升级node节点之前,应该将其标记为不可用,从集群中剔出:
    通过将节点标记为不可调度并删除工作负载,为维护节点做好准备。运行:

    kubectl drain $NODE --ignore-daemonsets
    

    你应该看到类似这样的输出:

    node/ip-172-31-85-18 cordoned
    WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-proxy-dj7d7, kube-system/weave-net-z65qx
    
    node/ip-172-31-85-18 drained
    

    补充第二点:本博客最多可升级至1.15版本,1.15-->1.16版本需要加参数如下

    kubeadm upgrade apply v1.16.10 --ignore-preflight-errors=CoreDNSUnsupportedPlugins
    

    补充第三点:离线更新时,不但要下载kubeadm,kubectl,kubelet的安装包,还要在线环境下升级成功所下载的docker镜像,并将其离线上传,才能离线升级成功

    在离线安装kubeadm,kubectl,kubelet时,可以用yumdownloader下载,yum install *来安装
    
  • 相关阅读:
    后台线程处理数据,如何实时更新UI(datagridview)多线程同步问题
    DataGridView设置行高
    C#打开外部文件,如txt文件
    20120621第一天_复习与测试\04continue
    关于C#正则表达式MatchCollection类的总结
    关于sqlite中的一个错误 “database is locked"
    UI中 加个timer 写个while true的方法 不断获取run的对象
    最近帮公司开发一个邮件营销软件 用到XPTable 但找了很多方法 摸索了很久都不知道如何更新进度条 不过在国外的一个网站 终于找到答案了
    C# 简单的往txt中写日志,调试时很有用 【转】
    输入要匹配的内容和正则表达式规则 返来单个匹配的内容 正则表达式方法 常用
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/13152298.html
Copyright © 2011-2022 走看看