《Kubernetes 集群安装》

《Kubernetes 集群安装》

Kubernetes(K8s)是容器编排的事实标准。本文给出主流安装方式:apt 一键安装 kubeadm/kubelet/kubectl。

1 方法一:apt 一键安装(Ubuntu)

以下脚本(曾用于 Ubuntu 16.04,容器内亦可安装)添加国内镜像源并安装 k8s 组件:

#!/bin/bash set -e mydir="$(dirname $(readlink -f $0))" cd $mydir KUBE_VERSION="1.16.4" apt_add_k8s_source() { echo "*** Apt: update source" curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - cat > /etc/apt/sources.list.d/kubernetes.list <<EOF deb [arch=amd64] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-$(lsb_release -cs) main EOF apt update } apt_install_k8s() { local version=`apt-cache madison kubelet|grep "$KUBE_VERSION"|head -n1|awk '{print $3}'` echo "*** Apt: install k8s: $version" apt install -y --allow-change-held-packages --allow-downgrades kubelet=$version kubeadm=$version kubectl=$version apt-mark hold kubelet kubeadm kubectl systemctl enable --now kubelet } kubelet_add_env_file() { echo "*** kubelet: Add 'EnvironmentFile'" local args="" if ! mount | grep -q "cgroup/pids"; then #LocalStorageCapacityIsolation=false # - Failed to start ContainerManager failed to get rootfs info: unable to find data in memory cache #SupportPodPidsLimit=false,SupportNodePidsLimit=false # - pid cgroup is supported after kernel 4.x args="--feature-gates=LocalStorageCapacityIsolation=false,SupportPodPidsLimit=false,SupportNodePidsLimit=false" fi cat > /etc/default/kubelet <<EOF KUBELET_EXTRA_ARGS="$args --max-pods=300" EOF } sys_udpate_kubelet_service() { echo "*** systemd: update service of k8s" systemd_svc="/etc/systemd/system/kubelet.service.d/" systemd_conf="$systemd_svc/10-kubeadm.conf" mkdir -p $systemd_svc [ ! -e $systemd_conf ] && cp /lib/systemd/system/kubelet.service.d/10-kubeadm.conf $systemd_conf if ! grep -q "User=root" $systemd_conf; then sed -i '/Service/a\User=root' $systemd_conf fi } apt_add_k8s_source apt_install_k8s kubelet_add_env_file sys_udpate_kubelet_service

脚本要点:

  • 通过 apt-mark hold 锁定版本,避免 kubelet 被意外升级。
  • 老内核没有 pid cgroup 时,通过 --feature-gates 关闭相关特性。

2 方法二:单独安装 kubectl

下载最新稳定版本:

# 先获取最新版本号 curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt # 下载指定版本 curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl # 添加可执行权限,移动到 /usr/local/bin chmod +x ./kubectl mv ./kubectl /usr/local/bin/kubectl # 验证 kubectl version

通过包管理工具安装(apt):

sudo apt-get update && sudo apt-get install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubectl

3 安装 minikube(单节点本地环境)

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 chmod +x minikube mv minikube /usr/local/bin/

4 相关学习资源

阅读 — · 全站 —
🎸 我的歌单 0 首