《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 相关学习资源
阅读 —
·
全站 —