在 Ubuntu服务器 18.04 LTS 上安装 Kubeadm
在两个节点上使用 apt 命令安装 Kubeadm。
jackli@kubernetes-01:~$ sudo apt install kubeadm -y Reading package lists... Done Building dependency tree 。。。 Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
检查 kubeadm 版本以验证它是否安装正确。
jackli@kubernetes-01:~$ kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:12:12Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
拉取在两个节点上配置 Kubernetes 所需的镜像。
jackli@kubernetes-01:~$ sudo kubeadm config images pull W0216 12:49:45.337272 6150 validation.go:28] Cannot validate kube-proxy config - no validator is available W0216 12:49:45.337364 6150 validation.go:28] Cannot validate kubelet config - no validator is available [config/images] Pulled k8s.gcr.io/kube-apiserver:v1.17.3 [config/images] Pulled k8s.gcr.io/kube-controller-manager:v1.17.3 [config/images] Pulled k8s.gcr.io/coredns:1.6.5
仅在 kubernetes-01.recipes.com(主节点)上初始化 Kubernetes。
jackli@kubernetes-01:~$ sudo kubeadm init --apiserver-advertise-address=192.168.1.218 W0216 12:56:11.961533 7491 validation.go:28] Cannot validate kube-proxy config - no validator is available W0216 12:56:11.961618 7491 validation.go:28] Cannot validate kubelet config - no validator is available [init] Using Kubernetes version: v1.17.3 。。。 Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.1.218:6443 --token uivhq9.ecs1vzjiz5tal24j \ --discovery-token-ca-cert-hash sha256:95ec6de9f2b260c807b021a1166abf45c55257b182ac94855f0ce60406c392d5
根据上面输出的要求,我们需要在使用 Kubernetes 之前配置用户环境。
因此,仅在 kubernetes-01.recipes.com(主节点)上执行以下命令。
jackli@kubernetes-01:~$ mkdir -p $HOME/.kube jackli@kubernetes-01:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config jackli@kubernetes-01:~$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
在 Kubernetes 集群中加入一个工作节点
使用 ssh 命令连接 kubernetes-02.recipes.com(工作节点)。
使用以下命令将 kubernetes-02.recipes.com 加入我们的 Kubernetes 集群作为工作节点。
jackli@kubernetes-02:~$ sudo kubeadm join 192.168.1.218:6443 --token uivhq9.ecs1vzjiz5tal24j --discovery-token-ca-cert-hash sha256:95ec6de9f2b260c807b021a1166abf45c55257b182ac94855f0ce60406c392d5 W0216 13:42:44.750776 4598 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set. [preflight] Running pre-flight checks [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ [preflight] Reading configuration from the cluster... * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details. Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
连接 kubernetes-01.recipes.com(master 节点),获取节点列表,确认 kubernetes-02.recipes.com(worker 节点)已经加入 Kubernetes 集群。
jackli@kubernetes-01:~$ sudo kubectl get nodes NAME STATUS ROLES AGE VERSION kubernetes-01.recipes.com NotReady master 54m v1.17.3 kubernetes-02.recipes.com NotReady <none> 8m27s v1.17.3
我们需要安装一个 pod 网络,以便我们的节点可以相互通信。
为此,我们在 Kubernetes 集群上安装 Flannel pod 网络。
jackli@kubernetes-01:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml podsecuritypolicy.policy/psp.flannel.unprivileged created clusterrole.rbac.authorization.k8s.io/flannel created ... daemonset.apps/kube-flannel-ds-ppc64le created daemonset.apps/kube-flannel-ds-s390x created
再次检查节点的状态。
jackli@kubernetes-01:~$ sudo kubectl get nodes NAME STATUS ROLES AGE VERSION kubernetes-01.recipes.com Ready master 58m v1.17.3 kubernetes-02.recipes.com Ready <none> 12m27s v1.17.3
我们已经在 Ubuntu服务器 18.04 LTS 上成功安装并配置了一个两节点的 Kubernetes 集群。
Kubernetes 预安装配置
我们需要在 Ubuntu 节点之间配置名称解析。
为此,我们可以使用权威 DNS 服务器或者使用本地 DNS 解析器。
使用 ssh 工具连接 kubernetes-01.recipes.com(主节点)。
为此,我们正在配置本地 DNS 解析器。
jackli@kubernetes-01:~$ sudo vi /etc/hosts
在此文件中添加以下几行。
192.168.1.218 kubernetes-01 kubernetes-01.recipes.com 192.168.1.219 kubernetes-02 kubernetes-02.recipes.com
在 kubernetes-02.recipes.com (worker node) 上重复上述步骤。
检查已安装的 Docker 版本。
jackli@kubernetes-01:~$ docker --version Docker version 18.09.7, build 2d0083d
验证 Docker 服务是否在两个节点上运行。
jackli@kubernetes-01:~$ systemctl status docker -> docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: e Active: active (running) since Sun 2020-02-16 11:17:17 UTC; 28min ago Docs: https://docs.docker.com Main PID: 1314 (dockerd) Tasks: 10 CGroup: /system.slice/docker.service ->->1314 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/contain Nov 16 11:17:17 docker-01.recipes.com dockerd[1314]: time="2020-02-16T11:17:17.5 Nov 16 11:17:17 docker-01.recipes.com dockerd[1314]: time="2020-02-16T11:17:17.5 Nov 16 11:17:17 docker-01.recipes.com dockerd[1314]: time="2020-02-16T11:17:17.6 Nov 16 11:17:17 docker-01.recipes.com systemd[1]: Started Docker Application Con
在两个 Kubernetes 节点上关闭交换。
jackli@kubernetes-01:~$ sudo sed -e '/swap/s/^/#/g' -i /etc/fstab jackli@kubernetes-01:~$ sudo swapoff -a
在两个节点上的 apt 中添加 Kubernetes Xenial 存储库的公钥。
jackli@kubernetes-01:~$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add OK
在两个节点上添加 Kubernetes Xenial 存储库。
jackli@kubernetes-01:~$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" Hit:2 http://pk.archive.ubuntu.com/ubuntu bionic InRelease Get:3 http://pk.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] Get:4 http://pk.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] Get:5 http://pk.archive.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] Get:1 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8,993 B] Get:6 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 Packages [33.9 kB] Fetched 286 kB in 2s (118 kB/s) Reading package lists... Done
我们在 Ubuntu服务器 上添加了 Kubernetes Xenial 存储库。
我们现在可以使用 apt 命令安装 Kubenetes 包。
安装环境
我们正在使用具有以下配置的两台 KVM 虚拟机。
主节点:
- CPU - 3.4 Ghz(2 核)
- 内存 - 2 GB
- 存储 - 20 GB
- 操作系统 - Ubuntu服务器 18.04 LTS
- 主机名 - kubernetes-01.recipes.com
- IP 地址 - 192.168.1.218 /24
工作节点:
- CPU - 3.4 Ghz(2 核)
- 内存 - 2 GB
- 存储 - 20 GB
- 操作系统 - Ubuntu服务器 18.04 LTS
- 主机名 - kubernetes-02.recipes.com
- IP 地址 - 192.168.1.219 /24
我们已经在两个节点上安装了 Docker。
我们可以按照我们之前的帖子在 Ubuntu服务器 18 LTS 上安装 Docker 来执行相同的操作。
Kubernetes(通常称为 k8s)是一个开源容器编排系统,用于自动化应用程序部署、扩展和管理。
它最初由 Google 设计,现在由 Cloud Native Computing Foundation 维护。
它旨在提供一个“跨主机集群自动部署、扩展和操作应用程序容器的平台”。
在本文中,我们将学习如何在 Ubuntu服务器 18.04 LTS 上安装 Kubernetes 集群。
我们正在配置两个 Ubuntu服务器 18.04 LTS 节点(一个主节点和一个工作节点),但是如果我们计划配置更多节点,可以使用相同的步骤。