<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          快速部署k8s集群

          共 5381字,需瀏覽 11分鐘

           ·

          2023-06-20 13:22

          本文使用kubeadm方式來快速部署k8s集群,操作系統(tǒng)基于ubuntu操作系統(tǒng)

          基礎(chǔ)配置

          IP網(wǎng)段規(guī)劃

          192.168.50.31 master節(jié)點

          192.168.50.32 node01節(jié)點

          192.168.50.33 node02節(jié)點


          操作系統(tǒng)版本

          • Ubuntu 22.04 LTS amd64版本

          環(huán)境準(zhǔn)備

          增加hosts解析記錄

          分別3臺機器配置hosts解析記錄

          在所有機器的/etc/hosts文件中增加解析

          192.168.50.31    master01.k8s.com
          192.168.50.31    node01.k8s.com
          192.168.50.32    node02.k8s.com
          

          配置主機名

          • master01機器配置(192.168.50.31)
          1
          ~$ hostnamectl set-hostname master01.k8s.com
          
          • node01機器配置(192.168.50.31)
          1
          ~$ hostnamectl set-hostname node01.k8s.com
          
          • node02機器配置(192.168.50.32)
          1
          ~$ hostnamectl set-hostname node02.k8s.com
          

          禁止所有機器的防火墻

          ~$ systemctl disable --now ufw.service
          

          所有機器啟用IPV4內(nèi)核轉(zhuǎn)發(fā)模塊

          ~$ modprobe br_netfilter
          

          所有機器配置ulimit參數(shù)

          ~$ ulimit -SHn 65535
          
          永久配置
          ~$ cat /etc/security/limits.conf
              soft nofile 65535
              hard nofile 65535
              soft nproc 65535
              hard nproc 65535
          

          所有機器內(nèi)核參數(shù)配置

          ~$ cat /etc/sysctl.d/k8s.conf
          net.ipv4.ip_forward = 1
          net.bridge.bridge-nf-call-iptables = 1
          net.bridge.bridge-nf-call-ip6tables = 1
          fs.may_detach_mounts = 1
          vm.overcommit_memory=1
          vm.panic_on_oom=0
          fs.inotify.max_user_watches=89100
          fs.file-max=52706963
          fs.nr_open=52706963
          net.netfilter.nf_conntrack_max=2310720
          
          net.ipv4.tcp_keepalive_time = 300
          net.ipv4.tcp_keepalive_probes = 3
          net.ipv4.tcp_keepalive_intvl = 15
          net.ipv4.tcp_max_tw_buckets = 36000
          net.ipv4.tcp_tw_reuse = 1
          net.ipv4.tcp_max_orphans = 327680
          net.ipv4.tcp_orphan_retries = 3
          net.ipv4.tcp_syncookies = 1
          net.ipv4.tcp_max_syn_backlog = 16384
          net.ipv4.ip_conntrack_max=655535
          net.ipv4.tcp_timestamps = 0
          net.core.somaxconn = 16384
          ~$ sysctl --system
          

          所有機器IPVS模塊安裝

          ~$ modprobe -- ip_vs
          ~$ modprobe -- ip_vs_rr
          ~$ modprobe -- ip_vs_wrr
          ~$ modprobe -- ip_vs_sh
          ~$ modprobe -- nf_conntrack
          ~$ cat /etc/modules-load.d/ipvs.conf
          ip_vs
          ip_vs_lc
          ip_vs_wlc
          ip_vs_rr
          ip_vs_wrr
          ip_vs_lblc
          ip_vs_lblcr
          ip_vs_dh
          ip_vs_sh
          ip_vs_fo
          ip_vs_nq
          ip_vs_sed
          ip_vs_ftp
          ip_vs_sh
          nf_conntrack
          ip_tables
          ip_set
          xt_set
          ipt_set
          ipt_rpfilter
          ipt_REJECT
          ipip
          

          所有機器檢查模塊是否加載

          ~$ lsmod |grep -e ip_vs -e nf_conntrack
          ~$ apt install ipset # 安裝ipset, ipvsadm 管理工具
          

          所有機器同步服務(wù)器時間

          ~$ ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime # 配置時區(qū)
          ~$ ntpdate time.windows.com
          

          所有機器關(guān)閉swap

          ~$ swapoff  -a
          ~$ cat /etc/fstab
          # 注釋swap分區(qū)
          #/swap.img  none    swap    sw  0   0
          

          容器運行時安裝

          所有機器依賴包安裝

          ~$ apt-get install -y libseccomp2
          

          所有機器containerd下載部署

          ~$ wget https://github.com/containerd/containerd/releases/download/v1.6.18/cri-containerd-cni-1.6.18-linux-amd64.tar.gz
          ~$ tar -tf cri-containerd-cni-1.6.18-linux-amd64.tar.gz # 查看壓縮包包含哪些文件
          ~$ tar zxf cri-containerd-cni-1.6.18-linux-amd64.tar.gz -C / # 解壓包到跟路徑
          ~$ export PATH=$PATH:/opt/cin/bin # 增加環(huán)境變量
          

          所有機器配置文件生成

          ~$ mkdir -p /etc/containerd
          ~$ containerd config default > /etc/containerd/config.toml
          

          所有機器修改配置文件

          配置文件路徑/etc/containerd/config.toml


          root = "/var/lib/containerd" # 保存持久化數(shù)據(jù)目錄
          ....
          sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6"
          ....
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
          ....
              SystemdCgroup = true
          ....
          [plugins."io.containerd.grpc.v1.cri".registry] # 鏡像加速配置
          ....
                [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
                  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
                    endpoint = ["https://bqr1dr1n.mirror.aliyuncs.com"]
                  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
                    endpoint = ["https://registry.aliyuncs.com/k8sxio"]
          

          所有機器啟動containerd服務(wù)

          ~$ systemctl  enable --now containerd
          


          開始集群安裝

          所有機器kubeadm安裝

          apt-get update && apt-get install -y apt-transport-https
          curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
          cat </etc/apt/sources.list.d/kubernetes.list
          deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
          EOF
          apt-get update
          apt-get install -y kubelet=1.23.13-00 kubeadm=1.23.13-00 kubectl=1.23.13-00
          sudo apt-mark hold kubelet=1.23.13-00 kubeadm=1.23.13-00 kubectl=1.23.13-00 # 鎖定版本
          

          所有機啟動kubelet服務(wù)

          ~$ systemctl enable --now kubelet
          

          master節(jié)點初始化集群配置文件

          ~$ kubeadm config print init-defaults --component-configs KubeletConfiguration >/root/kubeadm.yaml
          

          master節(jié)點修改配置文件

          配置文件路徑?/root/kubeadm.yaml


          .....
          kind: InitConfiguration
          localAPIEndpoint:
            advertiseAddress: 192.168.50.31 # 替換成master地址
              bindPort: 6443
          nodeRegistration:
            criSocket: /run/containerd/containerd.sock   # 修改為containerd的sock文件
            imagePullPolicy: IfNotPresent
            name: master01.k8s.com                         # 注冊的master名稱
            taints:                                      # 污點防止調(diào)度到master節(jié)點
              - effect: "NoSchedule"
                key: "node-role.kubernetes.io/master"
          ---
          apiVersion: kubeproxy.config.k8s.io/v1alpha1     # 增加kube-proxy模式配置
          kind: KubeProxyConfiguration
          mode: ipvs   # kube-proxy 模式
          .... 
          imageRepository: registry.aliyuncs.com/k8sxio     # 修改鏡像獲取地址為國內(nèi)地址
          kind: ClusterConfiguration
          kubernetesVersion: 1.23.13                        # 獲取k8s版本
          networking:
            dnsDomain: cluster.local
            serviceSubnet: 10.96.0.0/12
            podSubnet: 10.244.0.0/16  # 指定pod子網(wǎng)
          ....
          

          初始化master節(jié)點

          # 獲取鏡像
          ~$ kubeadm  config images pull --config /root/kubeadm.yaml
          # 手動拉取coredns鏡像,阿里云沒有這個鏡像
          ~$ ctr -n k8s.io image pull docker.io/coredns/coredns:1.8.6
          ~$ ctr -n k8s.io image tag docker.io/coredns/coredns:1.8.6 registry.aliyuncs.com/k8sxio/coredns:v1.8.6
          # 初始化master節(jié)點, 根據(jù)提示可加入node節(jié)點
          ~$ kubeadm  init -v 5 --config /root/kubeadm.yaml
          
          初始化master節(jié)點后,根據(jù)kubeadm join提示來完成node節(jié)點的加入 如果忘記join節(jié)點token可以通過命令重新獲取新的tokenkubeadm token create --print-join-command



          網(wǎng)絡(luò)插件安裝

          calico文件下載github地址


          ~$ kubectl apply -f calico.yaml
          # 移除containerd的網(wǎng)絡(luò)配置,放置影響pod分配的IP地址
          ~$ mv /etc/cni/net.d/10-containerd-net.conflist  /etc/cni/net.d/10-containerd-net.conflist.old
          


          清理集群

          執(zhí)行kubeadm rest以后需要在對應(yīng)的節(jié)點執(zhí)行清理,次命令可以在所有節(jié)點執(zhí)行


          ~$ kubeadm rest
          ~$ ifconfig cni0 down && ip link delete cni0
          ~$ rm -rf /var/lib/cni/
          










          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  竹菊一区二区 | 午夜三级免费福利影院 | 超碰在线偷 | 日韩国产毛片 | 久久亚洲中文字幕 |