ubuntu安装k8s.md

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 1. 关闭swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

# 2. 配置内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 3. 配置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

sudo sysctl --system

# 4. 安装基础依赖
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release

containerd

1
2
3
4
5
6
7
8
# 安装容器运行时
sudo apt-get update
sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建必要的目录
sudo mkdir -p /etc/apt/keyrings/

# 重新下载并安装密钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# 添加仓库源
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 更新包列表并安装
sudo apt-get update
sudo apt-get install -y kubelet=1.32.3-1.1 kubeadm=1.32.3-1.1 kubectl=1.32.3-1.1
sudo apt-mark hold kubelet kubeadm kubectl
1
2
3
4
5
6
sudo ctr images pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.10

sudo kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.32.9
1
2
3
4
5
6
7
8
# 创建 .kube 目录
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
# 安装 Flannel 网络插件
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 1. 检查节点状态(应该显示 Ready)
echo "=== 节点状态 ==="
kubectl get nodes

# 2. 检查核心 Pod(所有应该都是 Running)
echo "=== 系统 Pod 状态 ==="
kubectl get pods -n kube-system

# 3. 检查集群信息
echo "=== 集群信息 ==="
kubectl cluster-info

# 4. 检查网络插件
echo "=== 网络插件 ==="
kubectl get daemonset -n kube-system

# 5. 检查服务
echo "=== 服务状态 ==="
kubectl get svc -n kube-system

加入集群的命令:

1
2
kubeadm join 192.168.31.57:6443 --token p2x3iv.n078gchdqe6el87s \
--discovery-token-ca-cert-hash sha256:af9cdd640b60ca3040933efca26640d4baac1ace352bda339ee673ce210978d8

解决工作节点的镜像问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
echo "=== 修复工作节点镜像拉取问题 ==="

# 停止服务
sudo systemctl stop kubelet
sudo systemctl stop containerd

# 配置 containerd 使用国内镜像源
sudo mkdir -p /etc/containerd
sudo tee /etc/containerd/config.toml > /dev/null << 'EOF'
version = 2
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.10"
[plugins."io.containerd.grpc.v1.cri".containerd]
snapshotter = "overlayfs"
EOF

# 重启 containerd
sudo systemctl daemon-reload
sudo systemctl start containerd

# 手动拉取必要镜像
echo "拉取必要镜像..."
sudo ctr images pull registry.aliyuncs.com/google_containers/pause:3.10
sudo ctr images tag registry.aliyuncs.com/google_containers/pause:3.10 registry.k8s.io/pause:3.10
sudo ctr images pull registry.aliyuncs.com/google_containers/flannel:v0.23.0
sudo ctr images tag registry.aliyuncs.com/google_containers/flannel:v0.23.0 docker.io/flannel/flannel:v0.23.0

# 重启 kubelet
sudo systemctl start kubelet

echo "=== 修复完成,请等待几分钟后检查节点状态 ==="
echo "在控制平面运行: kubectl get nodes"
echo "检查 Flannel Pod: kubectl get pods -n kube-flannel -o wide"

安装docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 更新 apt 包索引
sudo apt-get update

# 安装依赖包
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release

# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 设置稳定版仓库
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

docker镜像加速

1
2
3
4
5
6
7
8
9
10
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://dockerproxy.cn",
"https://docker.m.daocloud.io",
"https://docker.1ms.run"
]
}
EOF

修改docker 作为后台

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 编辑 kubelet 配置
sudo mkdir -p /var/lib/kubelet
sudo tee /var/lib/kubelet/config.yaml > /dev/null << 'EOF'
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
clusterDNS:
- 10.96.0.10
clusterDomain: cluster.local
containerRuntimeEndpoint: "unix:///var/run/dockershim.sock"
staticPodPath: /etc/kubernetes/manifests
EOF

# 重启 kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet

ctr images pull docker.io/library/httpd:latest –hosts-dir=/etc/containerd/certs.d