无网络安装K8S是指在没有外网访问权限或外网环境的情况下,通过本地搭建的方式安装Kubernetes集群。这种方法适用于内网环境,或者安全要求较高的场景。在这篇文章中,我将指导你如何实现无网络安装K8S,并为你提供详细的代码示例和步骤。

### 无网络安装K8S的步骤

| 步骤 | 操作 |
| --- | --- |
| 1 | 获取K8S所需的镜像文件 |
| 2 | 通过本地方式将镜像导入到各节点 |
| 3 | 安装Docker、kubeadm、kubelet和kubectl |
| 4 | 初始化Master节点 |
| 5 | 加入Worker节点 |

### 操作步骤及代码示例

#### 步骤1:获取K8S所需的镜像文件

首先需要在一台可以访问外网的机器上获取所需的Kubernetes镜像文件。你可以通过以下命令将镜像文件保存为tar格式:

```bash
# 在外网可访问的机器上执行以下命令
# 指定K8S版本
KUBE_VERSION=v1.21.1
docker pull k8s.gcr.io/kube-apiserver:$KUBE_VERSION
docker pull k8s.gcr.io/kube-controller-manager:$KUBE_VERSION
docker pull k8s.gcr.io/kube-scheduler:$KUBE_VERSION
docker pull k8s.gcr.io/kube-proxy:$KUBE_VERSION
docker pull k8s.gcr.io/pause:3.4.1
docker pull k8s.gcr.io/etcd:3.4.13-0
docker pull k8s.gcr.io/coredns/coredns:v1.8.0

# 保存镜像为tar文件
docker save -o k8s.tar k8s.gcr.io/kube-apiserver:$KUBE_VERSION k8s.gcr.io/kube-controller-manager:$KUBE_VERSION k8s.gcr.io/kube-scheduler:$KUBE_VERSION k8s.gcr.io/kube-proxy:$KUBE_VERSION k8s.gcr.io/pause:3.4.1 k8s.gcr.io/etcd:3.4.13-0 k8s.gcr.io/coredns/coredns:v1.8.0
```

#### 步骤2:通过本地方式将镜像导入到各节点

将保存好的k8s.tar镜像文件通过U盘等方式拷贝到各K8S节点,然后执行以下命令导入镜像:

```bash
# 在各节点上执行
docker load -i k8s.tar
```

#### 步骤3:安装Docker、kubeadm、kubelet和kubectl

在每个节点上安装Docker、kubeadm、kubelet和kubectl软件包,可以通过以下命令安装:

```bash
# 安装Docker
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker

# 安装kubeadm、kubelet和kubectl
sudo apt update
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt update
sudo apt-get install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet
sudo systemctl start kubelet
```

#### 步骤4:初始化Master节点

在Master节点上执行以下命令进行初始化:

```bash
# 在Master节点上执行
sudo kubeadm init
```

#### 步骤5:加入Worker节点

在Worker节点上,执行将Master节点生成的join命令,加入到K8S集群中:

```bash
# 在Worker节点上执行
sudo kubeadm join : --token --discovery-token-ca-cert-hash
```

至此,你已经成功完成了无网络安装K8S的所有步骤。通过这种方式,即使没有外网访问权限,也能便捷地搭建Kubernetes集群。希望这篇文章可以帮助你顺利实现无网络安装K8S!