Ubuntu 22.04.06 LTS 安装 Kubernetes v1.28.9

136 阅读3分钟

更新记录

时间内容
2024-05-24初稿
2024-05-28优化初始化脚本

软件版本

softVersion
Ubuntu22.04.6 LTS
Kubernetes1.28.9
calico3.28.0
metrics-server0.7.1

一、初始化所有节点

①、复制初始化脚本至所有节点

➜  vim init_k8s_1.28.sh
#!/bin/bash

# 关闭交换内存
swapoff -a

# 关闭防火墙
ufw disable
ufw status

# 加载系统模块
modprobe overlay
modprobe br_netfilter

cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

# 修改系统参数
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf
# 执行命令以应用
sysctl -p

# containerd
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt update
apt-get install -y containerd.io=1.6.32-1
systemctl status containerd

mkdir /etc/containerd/
containerd config default > /etc/containerd/config.toml

sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
systemctl restart containerd

# kubeadm、kubectl、kubelet
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list

apt update
# apt-cache madison kubeadm
apt install -y kubeadm=1.28.9-2.1 kubectl=1.28.9-2.1 kubelet=1.28.9-2.1

②、执行脚本

# 给脚本加执行权限 & 所有节点执行
➜  chmod u+x init_k8snode_1.28.sh
➜  ./init_k8snode_1.28.sh

③、查看组件版本

➜  kubeadm version --output=yaml
➜  kubectl version --output=yaml
➜  kubelet --version

二、初始化控制平面

①、初始化控制平面

# 在master节点执行
➜  kubeadm init \
  --kubernetes-version=v1.28.9 \
  --pod-network-cidr 10.233.64.0/18 \      # Pod子网
  --apiserver-advertise-address=172.31.229.166 \
  --image-repository registry.aliyuncs.com/google_containers

②、配置kubeconfig, 以使用kubectl

➜  mkdir -p $HOME/.kube
➜  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

三、网络插件

①、部署calico

# 将 https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml 内容复制到本地修改

➜  vim calico_3.28.0.yaml
  - name: CALICO_IPV4POOL_CIDR    # 找到CALICO_IPV4POOL_CIDR
    value: "10.233.64.0/18"       # 修改values, 与Pod子网设置一致
➜  kubectl apply -f calico_3.28.0.yaml

②、查看 kube-system 下与网络相关的 Pod状态

➜  kubectl get pods -n kube-system
NAME                                      READY   STATUS              RESTARTS   AGE
calico-kube-controllers-8d76c5f9b-d57fv   1/1     Running             0          2m
calico-node-jn58z                         1/1     Running             0          2m
calico-node-qbrcb                         1/1     Running             0          2m
calico-node-wftdf                         1/1     Running             0          2m
calico-node-zvsvr                         1/1     Running             0          2m
coredns-66f779496c-67qhj                  1/1     Running             0          14m    # 安装网络插件后, coredns也Running起来了
coredns-66f779496c-hr4nl                  1/1     Running             0          14m

四、工作节点

①、在各work节点执行命令, 加入k8s集群

➜  kubeadm join 172.31.229.166:6443 --token ey2ep0.0slcpnchj0aaep7s \
        --discovery-token-ca-cert-hash sha256:a766e800ae826d7b365c15a9fa49343a0d7c41b6d36bb223e467f7aa8251c91e

②、查看k8s节点

➜  kubectl get nodes
NAME             STATUS   ROLES           AGE    VERSION
pre-k8s-master   Ready    control-plane   19m   v1.28.9
pre-k8s-node01   Ready    <none>          11m   v1.28.9
pre-k8s-node02   Ready    <none>          11m   v1.28.9
pre-k8s-node03   Ready    <none>          11m   v1.28.9

五、安装 metrics-server

①、部署 metrics-server

# 将 https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 内容复制到本地修改

➜  vim metrics-server_0.7.1.yaml

# 修改 image
registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.7.1

# 关闭tls
    spec:
      containers:
      - args:
        - --kubelet-insecure-tls

➜  kubectl apply -f metrics-server_0.7.1.yaml

②、使用top 查看metrics

➜  kubectl top nodes
NAME             CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
pre-k8s-master   81m          4%     2532Mi          73%       
pre-k8s-node01   72m          1%     29677Mi         95%       
pre-k8s-node02   84m          2%     20612Mi         66%       
pre-k8s-node03   100m         2%     22580Mi         71%       

➜  kubectl top pods -n gjr 
NAME                                             CPU(cores)   MEMORY(bytes)   
bidding-5f685bc5d-j57df                          6m           1663Mi          
craftsman-app-management-668475dd86-6s6lq        2m           1431Mi          
craftsman-business-5675c94d7c-fxsg7              1m           1997Mi          
craftsman-coin-598c64ff89-2vgf6                  1m           2011Mi          
craftsman-coupon-7c64559cb8-hg8zv                5m           1690Mi          
craftsman-craftsman-6c8f94d697-dbtdm             2m           2270Mi

参考文章: