DAY3 安装 Kubernetes

2021 IT铁人赛 DAY3

今天要来安装kubernetes,在k8s中有分为master和worker,因此一般来说会有至少两台机器在丛集中,但如果只有一台机器也没关系,後面会有办法解决的:D。

安装环境

两台ubuntu 18.04的机器(VM)

  • 2 GB or more of RAM per machine (any less will leave little room for your apps)
  • 2 CPUs or more

安装步骤

:::info
:bulb: Hint: 以下指令在master和worker上都需执行
:::

1.更新apt并安装软件包用来通过HTTPS获取存储库(在昨天Docker安装步骤中已经安装)

apt-get update && apt-get install -y apt-transport-https curl

2.安装kubelet、kubectl、kubeadm(在此处将版本指定为1.18版,这样後续的文章分享中才不会因版本问题而导致失败,各位可以自行指定版本)

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get install -y kubelet=1.18.20-00 kubeadm=1.18.20-00 kubectl=1.18.20-00
apt-mark hold kubelet=1.18.20-00 kubeadm=1.18.20-00 kubectl=1.18.20-00

3.Docker连结操纵

cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker

4.关闭swap

free 
swapoff -a 

这样就将kubernetes的环境建置好罗!再来做的就是启动你的k8s丛集。

启动丛集

:::info
:bulb: Hint: 以下指令在master上执行
:::

1.主节点(master)启动

kubeadm init  --pod-network-cidr=10.244.0.0/16
# 以下指令会在丛集启动後提醒你要执行
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

2.安装flannel

要注意以下flannel是for 1.18版本的,如使用其他版本需做调整

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

3.生成Join丛集Token使worker能加入丛集

在master启动後,也会印出你的join丛集的token,worker使用该token便可加入丛集,但往後如遗失token,可以用以下指令再获取token。

kubeadm token create --print-join-command

所产生的join token格式如下:

kubeadm join {master_ip}:6443 --token {token}     --discovery-token-ca-cert-hash sha256:{sha256 hash}

以上master的配置就暂时结束了。

4.worker加入master丛集

:::info
:bulb: Hint: 以下指令在worker上执行
:::

将在步骤3所获取的join token复制在worker上面执行就可以惹。

kubeadm join {master_ip}:6443 --token {token}     --discovery-token-ca-cert-hash sha256:{sha256 hash}

之後便可以到master上面查看worker是否成功加入丛集

kubectl get node

应该会有类似如下的输出

NAME      STATUS   ROLES    AGE   VERSION
{master}   Ready    master   30d   v1.18.0
{worker}   Ready    <none>   30d   v1.18.0

那如果没有两台机器的也不用担心,可以在使用以下指令

kubectl taint nodes --all node-role.kubernetes.io/master-

这样你就有一个单节点的丛集可以使用罗!

又一天:)


<<:  Day18:[排序演算法]Selection Sort - 选择排序法

>>:  Day6 Data types, Variables, and Operators (Ⅱ)

Day 20: Convolutional Neural Networks — 卷积神经网路初探(上)

卷积神经网路 Convolutional Neural Networks 卷积神经网路(CNN)又被...

第03天 - 环境建立(下)

前言: 今天来把环境都给整理完,如: 怎麽开启(展示).php档、引入 Bootstrap。 1.首...

从零开始学游戏设计:模型基础 Part.3 雕塑场景

这是 Roblox 从零开始系列,入门章节的第十六个单元,今天你想亲手制作在海洋上的安静孤岛,就由你...

服务器安装libsodium支持chacha20&salsa20

使用 salsa20 或 chacha20 或 chacha20-ietf 算法,需要安装 libs...

大脑如何精准学习 (1) 注意力

今天,产生了一个想法、或说好奇:是否有什麽原因,让原本在学习表现上有开放可能性的人,变成不主动积极了...