离线K8S单机版安装指的是在没有互联网连接的情况下,在单个节点上安装和部署Kubernetes。这种情况可能发生在企业内部网络无互联网访问权限、安全限制或者部署环境限制的情况下。本文将引导你完成离线K8S单机版安装的步骤,让你能够理解并实现这个过程。

整体流程
在离线环境中进行K8S单机安装,需要进行以下步骤:

| 步骤 | 描述 |
|----------|----------------------------------------------------------------------|
| 下载依赖 | 下载并准备K8S离线安装所需的docker镜像、kubelet等依赖程序及配置文件。|
| 拷贝文件 | 将下载好的依赖文件从有互联网访问权限的机器拷贝到离线环境中的目标机器。 |
| 安装依赖 | 安装离线环境中的机器上的docker、kubelet等依赖程序。 |
| 初始化 | 使用kubeadm初始化安装Kubernetes。 |
| 部署网络 | 使用CNI插件部署网络,使Kubernetes集群中的Pod能够相互通信。 |

每一步具体的操作和所需代码及其注释如下:

下载依赖:
1. 检查有无互联网连接权限。
```shell
ping 8.8.8.8
```
2. 下载K8S离线安装所需的docker镜像、kubelet等依赖程序及配置文件。
```shell
# 下载docker镜像
docker pull k8s.gcr.io/kube-apiserver:v1.18.0
docker pull k8s.gcr.io/kube-controller-manager:v1.18.0
docker pull k8s.gcr.io/kube-scheduler:v1.18.0
# 下载kubelet程序
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubelet
chmod +x kubelet
# 下载kubectl程序
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl
chmod +x kubectl
```
3. 准备kubelet的配置文件,设置离线环境中的kubelet参数。
```shell
# 创建kubelet配置文件
sudo mkdir -p /etc/kubernetes
cat <apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
serverTLSBootstrap: false
EOF
```

拷贝文件:
将下载好的依赖文件从有互联网访问权限的机器拷贝到离线环境中的目标机器。
```shell
# 通过scp命令将文件拷贝到离线环境机器
scp -r /path/to/offline/files @:/path/to/target/directory
```

安装依赖:
在离线环境中的机器上安装docker、kubelet等依赖程序。
```shell
# 安装docker
sudo apt-get update
sudo apt-get install -y docker.io
# 安装kubelet
sudo mv kubelet /usr/bin/
```

初始化:
使用kubeadm初始化安装Kubernetes。

在主节点上执行以下命令:
```shell
sudo kubeadm init --pod-network-cidr=
```
其中,``是你希望在你的集群中使用的网络范围,例如`10.244.0.0/16`。

初始化完成后,输出的结果中会包含加入集群的命令,类似于:
```shell
kubeadm join : --token --discovery-token-ca-cert-hash sha256:
```
请记下这个命令,稍后在工作节点上使用。

在主节点上执行以下命令,设置kubectl的配置文件:
```shell
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```

部署网络:
使用CNI插件部署网络,使Kubernetes集群中的Pod能够相互通信。

在主节点上执行以下命令,部署CNI网络插件calico:
```shell
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
```

在工作节点上执行在主节点初始化完成后输出的加入集群的命令,例如:
```shell
sudo kubeadm join : --token --discovery-token-ca-cert-hash sha256:
```
替换``、``、``和``为主节点初始化完成后输出的对应值。

至此,离线K8S单机版安装完成。你可以使用kubectl命令验证集群是否正确安装和运行。
```shell
kubectl get nodes
```

希望这篇文章能帮助你理解并实现离线K8S单机版安装的过程。在实际操作中,请根据你的实际情况和环境进行相应的调整。祝你成功配置和使用离线K8S单机版!