今天內容主要是安裝Kubernetes安裝的工具,一般會分成master和node分開使,所以會使用到兩台機器(電腦或VM都可以)。
兩個ubuntu18.04(一台當master,一台當node):
apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
apt-get update && apt-get install docker-ce=18.06.0~ce~3-0~ubuntu
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
到目前為止,master和node都要。
apt-get update
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 update
#如果是node的部分則缺少kubectl(雖然安裝並不會有影響)
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
到此安裝完所需的工具了,可以開始使用Kubernetes做事情。
指定版本的方式
#apt-get install -y kubelet=<版本號> kubeadm=<版本號> kubectl=<版本號>
apt-get install -y kubelet=1.17.3-00 kubeadm=1.17.3-00 kubectl=1.17.3-00
free
swapoff -a #關閉swap
swap關閉前
swap關閉後
2. 建立cluster Master
#kubeadm init #一般而言只需要這行就可以,但因為我需要用flannel所會去加入東西。
kubeadm init --pod-network-cidr=10.244.0.0/16
執行完init後,會看得到四行指令其中,底下為其中三行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
執行flannel的yaml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
查看是否正確
kubectl get pod -A
kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
#以我這邊的為例
kubeadm join 10.0.0.84:6443 --token x1syu4.vtyfd9g5ng2unog6 \
--discovery-token-ca-cert-hash sha256:8ce515a8da9023a648cba8e00582685169caa44cba6ea8a42e1200ed503705fa
連接完後回到master輸入指令就會看到master和node了
kubectl get node
到這裡就是成功將兩者連接可以開始部屬自己想要做的服務了。
ps:如果只有一台電腦的也不用緊張,k8s有可以讓master也能執行pod的功能。
kubectl taint nodes --all node-role.kubernetes.io/master-
如果想要再拿一個連接時的方式可以使用,會再建立連接的key。
kubeadm token create --print-join-command