长期支持版本

    社区创新版本

      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. 添加配置文件。

        # 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安装软件包。
      # 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 k8simage/kube-apiserver:v1.20.15
        # isula pull k8simage/kube-controller-manager:v1.20.15
        # isula pull k8simage/kube-scheduler:v1.20.15
        # isula pull k8simage/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 k8simage/kube-apiserver:v1.20.15 k8s.gcr.io/kube-apiserver:v1.20.15
        # isula tag k8simage/kube-controller-manager:v1.20.15 k8s.gcr.io/kube-controller-manager:v1.20.15
        # isula tag k8simage/kube-scheduler:v1.20.15 k8s.gcr.io/kube-scheduler:v1.20.15
        # isula tag k8simage/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 k8simage/kube-apiserver:v1.20.15
        # isula rmi k8simage/kube-controller-manager:v1.20.15
        # isula rmi k8simage/kube-scheduler:v1.20.15
        # isula rmi k8simage/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. 修改calico.yaml文件。

        # vim calico.yaml
        
        //修改以下两个参数
        
        - name: IP_AUTODERECTION_METHOD
        Value: ”can-reach=197.3.10.254”
        
        - name: CALICO_IPV4POOL_IPIP
        Value: ”CrossSubnet”
        

        • 若POD默认CNI为flannel,在flannel.yaml中添加以下内容,详见下图:

          --iface=enp4s0
          

      4. 修改后创建pod。

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

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

        # kubectl get pod -A -o wide
        

      查看master节点node信息

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

      # kubectl get nodes -o wide
      

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

      # kubeadm reset
      

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

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

      一键搞定!

      问题类型
      规范和低错类

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

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

      ● 英文中包含中文字符;

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

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

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

      易用性

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

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

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

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

      正确性

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

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

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

      ● 代码片段错误;

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

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

      风险提示

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

      内容合规

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

      ● 内容侵权;

      您对文档的总体满意度

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