更新记录
| 时间 | 内容 |
|---|---|
| 2024-05-24 | 初稿 |
| 2024-05-28 | 优化初始化脚本 |
软件版本
| soft | Version |
|---|---|
| Ubuntu | 22.04.6 LTS |
| Kubernetes | 1.28.9 |
| calico | 3.28.0 |
| metrics-server | 0.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
参考文章: