k8s安装指南

首先选择docker适配的k8s版本.

docker 版本 20.10.1
k8s 1.23.1-00 amd64

安装

安装前做的事

  • 关闭swap.
  • 添加k8s源.
  • 版本选择
  • 如果是window wsl. 需要确保 可以使用systemctl 而不是service.方案
1
2
3
4
5
6
7
8
# k8s 的阿里源
apt-get update && apt-get install -y apt-transport-https
apt upgrade -y
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update

1. 安装命令

1
2
apt install kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00 -y

2. 初始化

1
kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

3. 安装Kubernetes.

安装 Kubernetes 集群有很多成熟的方案,在本地搭建也有 minikube、microk8s 等等,我们这里选择使用 KinD:在容器中来运行 Kubernetes 的一种简单方式。

1
2
3
4
5
6
7
# 下载 KinD 二进制文件
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.8.1/kind-$(uname)-amd64
# 标记为可执行文件
chmod +x ./kind
# 移动到 PATH 目录下去
mv ./kind /usr/local/bin/
# TODO,记得提前下载安装 kubectl 二进制文件
1
2
3
4
5
6
7
# 下载 KinD 二进制文件
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.8.1/kind-$(uname)-amd64
# 标记为可执行文件
chmod +x ./kind
# 移动到 PATH 目录下去
mv ./kind /usr/local/bin/
# TODO,记得提前下载安装 kubectl 二进制文件

4. 用kind创建一个k8s集群.

1
2
3
4
5
6
7
8
# 检查是否设置了 KUBECONFIG 环境变量
echo $KUBECONFIG
# 检查是否存在 .kube 目录,不需要手动创建
ls $HOME/.kube
# 使用 kind 命令创建一个名为 wslk8s 的集群
kind create cluster --name wslk8s
# 创建后检查 .kube 目录
ls $HOME/.kube

5. 在集群中部署应用.

比如安装一个kubernetes Dashboard.

1
2
3
4
# 在集群中安装 Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.1/aio/deploy/recommended.yaml
# 获取 dashboard 的资源对象
kubectl get all -n kubernetes-dashboard

遗留问题

  • k8s的网络环境.
  • DNS服务.
  • wsl每次启动 怎么重启k8s.
  • kubectl proxy 是什么 什么用.
  • 共享资源下的 占用问题. 分配权重?? 针对高性能计算性服务.
  • 服务优雅性. 上下线.

其他的概念.

1
kubectl apply -f dig.yaml

dig.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
apiVersion: v1
kind: Pod
metadata:
name: dig
namespace: default
spec:
containers:
- name: dig
image: docker.io/azukiapp/dig
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
restartPolicy: Always

k8s dns原理

因为/etc/docker/daemon.json 配置原因导致docker启动失败.

{
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
},
“data-root”: “/mnt/d/DockerData/dockerDatas”,
“storage-driver”: “overlay2”,
“storage-opts”: [“overlay2.override_kernel_check=true”],
“registry-mirrors”: [“https://tabss8zh.mirror.aliyuncs.com“],
“runtimes”: {
“nvidia”: {
“path”: “/usr/bin/nvidia-container-runtime”,
“runtimeArgs”: []
}
}
}

“data-root”: “/mnt/d/DockerData/docker”,
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.1

docker默认的数据文件路径为

/var/lib/docker

参考文档

wsl上k8s

代码自动发布—docker版本(20.10.1)+k8s版本(1.20.1)

K8s教程

https://kuboard.cn/learning/
https://kubernetes.io/zh/
k8s中文文档