k8s安装指南

Catalogue
  1. 安装
    1. 1. 安装命令
    2. 2. 初始化
    3. 3. 安装Kubernetes.
    4. 4. 用kind创建一个k8s集群.
    5. 5. 在集群中部署应用.
  • 遗留问题
    1. 因为/etc/docker/daemon.json 配置原因导致docker启动失败.
    2. docker默认的数据文件路径为
  • 参考文档
  • 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中文文档