单节点安装k8s

740 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情

参考地址

www.kubernetes.org.cn/5650.htmlkuboard.cn/install/ins…

安装步骤

安装docker

在 master 节点和 worker 节点都要执行

最后一个参数 1.18.9 用于指定 kubenetes 版本,支持所有 1.18.x 版本的安装

腾讯云 docker hub 镜像

export REGISTRY_MIRROR="mirror.ccs.tencentyun.com"

DaoCloud 镜像

export REGISTRY_MIRROR="f1361db2.m.daocloud.io"

华为云镜像

export REGISTRY_MIRROR="05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"

阿里云 docker hub 镜像

export REGISTRY_MIRROR=registry.cn-hangzhou.aliyuncs.com curl -sSL kuboard.cn/install-scr… | sh -s 1.18.9

初始化master

  • 只在 master 节点执行

  • 替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)

export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令

export MASTER_IP=172.25.9.160

  • 替换 apiserver.demo 为 您想要的 dnsName

export APISERVER_NAME=apiserver.demo

  • Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中

export POD_SUBNET=10.100.0.1/16 echo "MASTERIP{MASTER_IP} {APISERVER_NAME}" >> /etc/hosts

#!/bin/bash

  • 只在 master 节点执行

  • 脚本出错时终止执行

set -e if [ ${#POD_SUBNET} -eq 0 ] || [ ${#APISERVER_NAME} -eq 0 ]; then echo -e "\033[31;1m请确保您已经设置了环境变量 POD_SUBNET 和 APISERVER_NAME \033[0m" echo 当前POD_SUBNET=$POD_SUBNET echo 当前APISERVER_NAME=$APISERVER_NAME exit 1 fi

  • 查看完整配置选项

godoc.org/k8s.io/kube…

rm -f ./kubeadm-config.yaml cat < ./kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.18.9 imageRepository: registry.aliyuncs.com/k8sxio controlPlaneEndpoint: "APISERVERNAME:6443"networking:serviceSubnet:"10.96.0.0/16"podSubnet:"{APISERVER_NAME}:6443" networking: serviceSubnet: "10.96.0.0/16" podSubnet: "{POD_SUBNET}" dnsDomain: "cluster.local" EOF

  • 您也可以只使用--ignore-preflight-errors=NumCPU标志运行命令。这实际上将跳过该问题。这就是我在实验室所做的。

kubeadm init --config=kubeadm-config.yaml --upload-certs --ignore-preflight-errors=NumCPU

  • 配置 kubectl

rm -rf /root/.kube/ mkdir /root/.kube/ cp -i /etc/kubernetes/admin.conf /root/.kube/config

echo "安装calico-3.13.1" rm -f calico-3.13.1.yaml wget kuboard.cn/install-scr… kubectl apply -f calico-3.13.1.yaml

验证

  • 只在 master 节点执行

  • 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态

watch kubectl get pod -n kube-system -o wide

  • 查看 master 节点初始化结果

kubectl get nodes -o wide

初始化worker

  • 替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)

export MASTER_IP=172.17.63.184

  • 替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME

export APISERVER_NAME=apiserver.demo echo "MASTERIP{MASTER_IP} {APISERVER_NAME}" >> /etc/hosts

  • 替换为 master 节点上 kubeadm token create 命令的输出

kubeadm join apiserver.demo:6443 --token gmlp9i.ev1vrtswzzhzlerg --discovery-token-ca-cert-hash sha256:731ac799afaed469f7f9ac5882abc4055cb7b42ca5bf2e86fade01c682682f8f

export MASTER_IP=172.17.63.184

  • 替换 apiserver.demo 为 您想要的 dnsName

export APISERVER_NAME=apiserver.demo

  • Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中

export POD_SUBNET=10.100.0.1/16 echo "MASTERIP{MASTER_IP} {APISERVER_NAME}" >> /etc/hosts