长期支持版本

    K8s+iSulad环境部署

    准备集群服务器

    需准备至少3台openEuler机器,建议在openEuler-20.03及以上版本运行。下表为示例搭建机器信息,仅供参考。

    主机名IP系统版本角色组件
    lab1197.xxx.xxx.xxxopenEuler 20.03 LTS SP3控制节点iSulad/k8s
    lab2197.xxx.xxx.xxxopenEuler 20.03 LTS SP3工作节点1iSulad/k8s
    lab3197.xxx.xxx.xxxopenEuler 20.03 LTS SP3工作节点2iSulad/k8s

    镜像/软件信息

    安装过程中需要用到的软件及镜像名称如下表,版本号为示例安装时用到的版本,仅供参考。

    软件版本
    iSulad2.0.17-2
    kubernetes-client1.20.2-9
    kubernetes-kubeadm1.20.2-9
    kubernetes-kubelet1.20.2-9
    镜像版本
    k8s.gcr.io/kube-proxyv1.20.2
    k8s.gcr.io/kube-apiserverv1.20.2
    k8s.gcr.io/kube-controller-managerv1.20.2
    k8s.gcr.io/kube-schedulerv1.20.2
    k8s.gcr.io/etcd3.4.13-0
    k8s.gcr.io/coredns1.7.0
    k8s.gcr.io/pause3.2
    calico/nodev3.14.2
    calico/pod2daemon-flexvolv3.14.2
    calico/cniv3.14.2
    calico/kube-controllersv3.14.2

    如果在无外网环境中搭建,可以从以下链接提前下载对应的软件包、相关依赖软件包及镜像。
    软件包下载地址:https://repo.openeuler.org/openEuler-22.03-LTS-SP1/
    镜像下载地址:https://hub.docker.com

    修改host文件

    1. 修改主机名,以其中一台机器为例。

      # hostnamectl set-hostname lab1
      # sudo -i
      
    2. 配置主机名解析,编辑三台服务器的/etc/hosts文件。

      # vim /etc/hosts
      
    3. 在hosts文件中添加以下内容(IP+主机名)

      197.xxx.xxx.xxx lab1
      197.xxx.xxx.xxx lab2
      197.xxx.xxx.xxx lab3
      

    环境准备

    1. 关闭防火墙。

      # systemctl stop firewalld
      # systemctl disable firewalld
      
    2. 禁用selinux。

      # setenforce 0
      
    3. 关闭系统swap。

      # swapoff -a
      # sed -ri 's/.*swap.*/#&/' /etc/fstab
      
    4. 网络配置,开启相应的转发机制。

      # cat > /etc/sysctl.d/kubernetes.conf <<EOF
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
      net.bridge.bridge-nf-call-ip6tables = 1
      vm.swappiness=0
      EOF
      
    5. 生效规则。

      # modprobe overlay
      # modprobe br_netfilter
      # sysctl -p /etc/sysctl.d/kubernetes.conf
      
    6. 配置开机启动脚本。

      # vim /etc/init.d/k8s.sh
      
      • 在k8s.sh脚本中添加以下内容。

        #!/bin/sh
        modprobe br_netfilter
        sysctl -w net.bridge.bridge-nf-call-ip6tables = 1
        sysctl -w net.bridge.bridge-nf-call-iptables = 1
        
      • 改变脚本权限。

        # chmod +x /etc/init.d/k8s.sh
        
    7. 添加配置文件。

      配置文件br_netfilte.service应该放在systemd的service目录,一般在/usr/lib/systemd/system。

      # vim br_netfilte.service
      
      [Unit]
      Description=To enable the core module br_netfilter when reboot
      After=default.target
      [Service]
      ExecStart=/etc/init.d/k8s.sh //可以自定义
      [Install]
      WantedBy=default.target
      
      • 添加完成后启动服务。

        # systemctl daemon-reload
        # systemctl enable br_netfilter.service
        
    8. 配置sysctl。

      # sed -i "s/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g" /etc/sysctl.conf
      # sed -i 12a\vm.swappiness=0 /etc/sysctl.conf
      

    安装kubeadm、kubectl、kubelet组件及iSulad

    1. 使用yum install安装软件包。

      kubernetes相关的组件在EPOL中,使用yum安装前需要在yum源中配置EPOL源。

    # yum install -y kubernetes-kubeadm
    # yum install -y kubernetes-client
    # yum install -y kubernetes-kubelet
    # yum install -y iSulad
    
    1. 设置kubelet开机启动。
    # systemctl enable kubelet
    

    修改isulad配置

    1. 进入/etc/isulad,修改daemon.json文件。
    # vi /etc/isulad/daemon.json
    
    1. 修改并添加配置文件中的内容。
    {
      "group": "isula",
      "default-runtime": "lcr",
      "graph": "/var/lib/isulad",
      "state": "/var/run/isulad",
      "engine": "lcr",
      "log-level": "ERROR",
      "pidfile": "/var/run/isulad.pid",
      "log-opts": {
          "log-file-mode": "0600",
          "log-path": "/var/lib/isulad",
          "max-file": "1",
          "max-size": "30KB"
      },
      "log-driver": "stdout",
      "container-log": {
          "driver": "json-file"
      },
      "hook-spec": "/etc/default/isulad/hooks/default.json",
      "start-timeout": "2m",
      "storage-driver": "overlay2",
      "storage-opts": [
          "overlay2.override_kernel_check=true"
      ],
      "registry-mirrors": [
                  "docker.io"
      ],
      "insecure-registries": [
                   "k8s.gcr.io",
                   "quay.io",
                   "oci.inhuawei.com",
                   "rnd-dockerhub.huawei.com",
                   "registry.aliyuncs.com",
                   "【本地私有镜像仓IP】"
      ],
      "pod-sandbox-image": "k8s.gcr.io/pause:3.2",
      "native.umask": "normal",
      "network-plugin": "cni",
      "cni-bin-dir": "/opt/cni/bin",
      "cni-conf-dir": "/etc/cni/net.d",
      "image-layer-check": false,
      "use-decrypted-key": true,
      "insecure-skip-verify-enforce": false,
      "cri-runtimes": {
          "kata": "io.containerd.kata.v2"
      }
    }
    
    1. 重启isulad服务。
    # systemctl restart isulad
    

    加载isulad镜像

    1. 查看需要的系统镜像。

      # kubeadm config images list
      

    注意对应的版本号,输出结果如图所示。

    1. 使用isula拉取所需镜像。

      说明 : 以下所下载的镜像版本均为示例,具体版本号以上条命令返回结果为准,下同。

      # isula pull k8smx/kube-apiserver:v1.20.15
      # isula pull k8smx/kube-controller-manager:v1.20.15
      # isula pull k8smx/kube-scheduler:v1.20.15
      # isula pull k8smx/kube-proxy:v1.20.15
      # isula pull k8smx/pause:3.2
      # isula pull k8smx/coredns:1.7.0
      # isula pull k8smx/etcd:3.4.13-0
      
    2. 修改已下载的镜像标签。

      # isula tag k8smx/kube-apiserver:v1.20.15 k8s.gcr.io/kube-apiserver:v1.20.15
      # isula tag k8smx/kube-controller-manager:v1.20.15 k8s.gcr.io/kube-controller-manager:v1.20.15
      # isula tag k8smx/kube-scheduler:v1.20.15 k8s.gcr.io/kube-scheduler:v1.20.15
      # isula tag k8smx/kube-proxy:v1.20.15 k8s.gcr.io/kube-proxy:v1.20.15
      # isula tag k8smx/pause:3.2 k8s.gcr.io/pause:3.2
      # isula tag k8smx/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0
      # isula tag k8smx/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
      
    3. 删除旧镜像。

      # isula rmi k8smx/kube-apiserver:v1.20.15
      # isula rmi k8smx/kube-controller-manager:v1.20.15
      # isula rmi k8smx/kube-scheduler:v1.20.15
      # isula rmi k8smx/kube-proxy:v1.20.15
      # isula rmi k8smx/pause:3.2
      # isula rmi k8smx/coredns:1.7.0
      # isula rmi k8smx/etcd:3.4.13-0
      
    4. 查看已拉取的镜像。

      # isula images
      

    安装crictl工具

    # yum install -y cri-tools
    

    安装conntrack组件

    # yum install -y conntrack
    

    初始化master节点

    执行如下命令初始化master节点:

    # kubeadm init --kubernetes-version v1.20.2 --cri-socket=/var/run/isulad.sock --pod-network-cidr=[指定pod分配IP段]
    
    //以上参数的解释
    kubernetes-version 为当前安装的版本
    cri-socket 指定引擎为isulad
    pod-network-cidr 指定pod分配的ip段
    

    根据系统提示输入如下命令:

    # mkdir -p $HOME/.kube
    # sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    # sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

    初始化成功后,复制最后两行内容,在node节点上执行刚刚复制的命令,将节点加入master集群,如未记录上述命令可通过如下命令生成:

    # kubeadm token create --print-join-command
    

    node节点添加进集群

    粘贴master上初始化生成的kubeadm join ...命令,并在discovery前添加--cri-socket=/var/run/isulad.sock,执行如下命令:

    # kubeadm join [IP地址] --token bgyis4.euwkjqb7jwuenwvs --cri-socket=/var/run/isulad.sock --discovery-token-ca-cert-hash sha256:3792f02e136042e2091b245ac71c1b9cdcb97990311f9300e91e1c339e1dfcf6
    

    安装calico网络插件

    1. 拉取calico镜像。

      需要在master节点配置calico网络插件,同时需要在每个节点中提前拉取需要版本的镜像。

      isula pull calico/node:v3.14.2
      isula pull calico/cni:v3.14.2
      isula pull calico/kube-controllers:v3.14.2
      isula pull calico/pod2daemon-flexvol:v3.14.2
      
    2. 在master节点上获取配置文件。

      wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml
      
    3. 修改后创建pod。

      # kubectl apply -f calico.yaml
      
      • 如需删除使用如下命令:

        # kubectl delete -f calico.yaml
        
    4. 查看pod信息。

      # kubectl get pod -A -o wide
      

    查看master节点node信息

    使用如下命令可查看节点的详细信息:

    # kubectl get nodes -o wide
    

    若需要重置node节点,可使用如下命令:

    # kubeadm reset
    

    文档捉虫

    “有虫”文档片段

    问题描述

    提交类型 issue

    有点复杂...

    找人问问吧。

    PR

    小问题,全程线上修改...

    一键搞定!

    问题类型
    规范和低错类

    ● 错别字或拼写错误;标点符号使用错误;

    ● 链接错误、空单元格、格式错误;

    ● 英文中包含中文字符;

    ● 界面和描述不一致,但不影响操作;

    ● 表述不通顺,但不影响理解;

    ● 版本号不匹配:如软件包名称、界面版本号;

    易用性

    ● 关键步骤错误或缺失,无法指导用户完成任务;

    ● 缺少必要的前提条件、注意事项等;

    ● 图形、表格、文字等晦涩难懂;

    ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

    正确性

    ● 技术原理、功能、规格等描述和软件不一致,存在错误;

    ● 原理图、架构图等存在错误;

    ● 命令、命令参数等错误;

    ● 代码片段错误;

    ● 命令无法完成对应功能;

    ● 界面错误,无法指导操作;

    风险提示

    ● 对重要数据或系统存在风险的操作,缺少安全提示;

    内容合规

    ● 违反法律法规,涉及政治、领土主权等敏感词;

    ● 内容侵权;

    您对文档的总体满意度

    非常不满意
    非常满意
    提交
    根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
    文档捉虫
    编组 3备份