本文档描述了如何在CentOS上使用kubeadm安装单个控制面板节点(主节点)的Kubernetes集群( v1.15 ),然后部署到一个外部OpenStack云厂商,并且使用Cinder CSI插件将Cinder存储卷用作Kubernetes中的持久卷。
OpenStack的准备工作
Kubernetes集群要在OpenStack VM上运行,因此让我们首先需要在OpenStack中创建一些东西。
- Kubernetes集群的项目/租户
- Kubernetes集群项目的用户,以查询节点信息和附加存储卷等
- 专用网络和子网
- 专用网络的路由器,并将其连接到公用网络以获取浮动IP
- 所有Kubernetes 虚拟机的安全组
- 一个虚拟机作为控制面板节点(主节点),几个虚拟机作为工作节点
安全组将具有以下规则来打开Kubernetes的端口。
控制面板节点(主节点)
协议 | 端口号 | 描述 |
---|---|---|
TCP协议 | 6443 | Kubernetes API Server |
TCP协议 | 2379-2380 | etcd server client API |
TCP协议 | 10250 | Kubelet API |
TCP协议 | 10251 | kube-scheduler |
TCP协议 | 10252 | kube-controller-manager |
TCP协议 | 10255 | 只读 Kubelet API |
工作节点
协议 | 端口号 | 描述 |
---|---|---|
TCP协议 | 10250 | Kubelet API |
TCP协议 | 10255 | Read-only Kubelet API |
TCP协议 | 30000-32767 | NodePort Services |
控制面板节点(主节点)和工作节点上的CNI端口
协议 | 端口号 | 描述 |
---|---|---|
TCP协议 | 179 | Calico BGP network |
TCP协议 | 9099 | Calico felix(健康检查) |
UDP协议 | 8285 | Flannel |
UDP协议 | 8472 | Flannel |
TCP协议 | 6781-6784 | Weave Net |
UDP协议 | 6783-6784 | Weave Net |
仅在使用特定的CNI插件时才需要打开CNI特定的端口。在本指南中,我们将使用Weave Net。在安全组中仅需要打开Weave Net端口(TCP 6781-6784和UDP 6783-6784)。
控制面板节点(主节点)至少需要2个内核和4GB RAM。启动虚拟机后,请验证其主机名,并确保其与Nova中的节点名相同。如果主机名不可解析,请将其添加到中/etc/hosts。
例如,如果虚拟机名为master1,并且它的内部IP是192.168.1.4。将其添加到/etc/hosts并将主机名设置为master1。
echo "192.168.1.4 master1" >> /etc/hosts hostnamectl set-hostname master1
安装Docker和Kubernetes
接下来,我们将按照官方文档使用kubeadm安装docker和Kubernetes。
按照容器运行时文档中的步骤安装Docker 。
请注意,最佳做法是将systemd用作Kubernetes 的cgroup驱动程序。如果你使用内部容器注册表,请将其添加到docker 配置中。
# Install Docker CE
## Set up the repository
### Install required packages.
yum install yum-utils device-mapper-persistent-data lvm2
### Add Docker repository.
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
## Install Docker CE.
yum update && yum install docker-ce-18.06.2.ce
## Create /etc/docker directory.
mkdir /etc/docker
# Configure the Docker daemon
cat > /etc/docker/daemon.json