kebernetes集群安装

2022-08-1801

版本说明

ubuntu: 22.04
Kubernetes: 1.24.3 kubeadm: 1.24.3
kubectl: 1.24.3
kubelet: 1.24.3
containerd: 1.6.8
cni: 1.1.1
runc: 1.1.3

系统环境

角色hostnameip
masterubuntu1192.168.127.31
nodeubuntu2192.168.127.32
nodeubuntu3192.168.127.33

需关闭防火墙,禁用交换分区

# 关闭防火墙
ufw disable
# 禁用交换分区, 用vi修改/etc/fstab文件,在swap分区这行前加 # 禁用掉,保存退出
vi /etc/fstab
1
2
3
4

设置网络桥接

操作位置:master,node

  1. 通过运行 ls mod | grep br_netfilter 来验证 br_netfilter 模块是否已加载。
  2. 如果没有加载此模块,则运行 sudo modprobe br_netfilter。
  3. 配置ipv4网络桥接
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

安装容器运行时containerd,runc,cni

操作位置:master,node

  1. containerd,runc,cni 安装方法:https://github.com/containerd/containerd/blob/main/docs/getting-started.md
  2. 生成容器运行时默认配置
# 1. 生成容器运行时默认配置
containerd config default > /etc/containerd/config.toml

# 2. 结合 runc 使用 systemd cgroup 驱动,在 /etc/containerd/config.toml 中设置
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  ...
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true

# 3. 指定socket端点
crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl config image-endpoint unix:///run/containerd/containerd.sock

# 4. 替换沙箱镜像
vi /etc/containerd/config.toml

[plugins]
  .....
  [plugins."io.containerd.grpc.v1.cri"]
  	...
	sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.5"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

安装kubeadm kubectl kubelet

操作位置:master,node

  1. 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
1
2
  1. 下载 Google Cloud 公开签名秘钥:
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
1
  1. 添加 Kubernetes apt 仓库:
# kubernetes源
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 清华源
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/kubernetes/apt kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
1
2
3
4
  1. 更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
1
2
3

使用kubeadm初始化集群

操作位置:master

# 初始化
kubeadm init --kubernetes-version=v1.24.3 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16  
1
2

成功时输出如下:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a Pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  /docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

要使非 root 用户可以运行 kubectl,请运行以下命令

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

安装 Pod 网络附加组件

操作位置:master

本例中使用kube-flannel
配置文件见: https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
使用文档:https://github.com/flannel-io/flannel

kubectl apply -f kube-flannel.yml
1

加入节点

操作位置:node

运行初始化成功输出的命令,如下:

kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>
1

验证

操作位置:master

运行 kubectl get nodes 查看节点状态,成功如下

NAME      STATUS   ROLES           AGE   VERSION
ubuntu1   Ready    control-plane   25h   v1.24.3
ubuntu2   Ready    <none>          25h   v1.24.3
ubuntu3   Ready    <none>          25h   v1.24.3
1
2
3
4

评论(0)

评论

dodododooo © 2022

Powered by VuePress

Theme by dodododooo