学习k8s

学习k8s做笔记,通过kubeadm搭建1master、2node。网络插件:flannel。系统Ubuntu22.04

系统安装docker

Docker官方手册

master、node设备各安装docker、kubelet、 kubeadm、 kubectl。

为kubeadm准备

master、node进行准备工作:

  1. 将cgroup处理改成systemd

nano /etc/docker/daemon.json

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

sudo systemctl enable docker sudo systemctl daemon-reload sudo systemctl restart docker

  1. 为了让 Kubernetes 能够检查、转发网络流量,你需要修改 iptables 的配置,启用“br_netfilter”模块

nano /etc/modules-load.d/k8s.conf

br_netfilter

nano /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1

sudo sysctl --system

  1. 修改“/etc/fstab”,关闭 Linux 的 swap 分区,提升 Kubernetes 的性能
sudo swapoff -a
sudo sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab

安装kubeadm

Kuneadm官方手册 在master、node上都需要安装

  • 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:
sudo apt-get update

sudo apt-get install -y apt-transport-https ca-certificates curl
  • (有条件)下载 Google Cloud 公开签名秘钥:
sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

如果上面访问不到,可选择其他,例如清华源提供: 导入gpg key

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

创建/etc/apt/sources.list.d/kubernetes.list,内容:

deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/kubernetes/apt kubernetes-xenial main

之后 sudo apt update 更新一下。

  • 安装所需的1.23.x 版本: sudo apt install -y kubeadm=1.23.3-00 kubelet=1.23.3-00 kubectl=1.23.3-00

  • 锁定这三个软件的版本: sudo apt-mark hold kubelet kubeadm kubectl

Master配置

kubeadm init \
--apiserver-advertise-address=172.20.20.12 \
--kubernetes-version v1.23.3 \
--pod-network-cidr=10.20.0.0/16

安装完成后按提示执行:

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

同时还有一个提示: Then you can join any number of worker nodes by running the following on each as root: 下面那行命令是其他节点就爱如集群的命令。

Master的token是有时效性的,默认超过24H后失效,要再创建新的token。在master上执行kubeadm token create --print-join-command

  • 安装网络插件flannel kube-flannel.yml 修改 net-conf.json: NetWrok地址,与Kubernetes的--pod-network-cidr 网段地址。

修改完成,kubectl apply -f kube-flannel.yml

Node节点配置

Node安装好kubeadm之后,通过join指令加入。 例如:

sudo kubeadm join 172.20.20.12:6443 --token 80duqn.gzxz6rv5gkgosxkb \
--discovery-token-ca-cert-hash sha256:84d55c1168e9830b4f66e1c0816a218da55f96cce50f750456186fcc726a79ab 

验证

在Master上kubectl get node 查看。

完结 祝好