容器编排——kubeadm在线或离线搭建kubernetes集群
目录1、架构简介:2、集群架构图:3、集群服务器:4、修改主机名称:5、修改hosts配置文件:6、关闭selinux:7、关闭防火墙:8、关闭swap:9、设置iptables网桥:10、软件k8s/docker/dashboard版本:11、安装docker环境:(1)在线安装docker:① 卸载旧版本docker:② 安装依赖:③ 配置存储仓库:④ 安装docker:(2)离线rpm安装d
目录
② 安装安装kubeadm/kubelet/kubectl:
② 获取kubeadm/kubelet/kubectl离线包:
③ 上传kubeadm/kubelet/kubectl离线包:
③ 查询discovery-token-ca-cert-hash值:
1、架构简介:
搭建k8s-1.17.0的离线资源地址:kubeadm安装k8s-1.17.0离线资源.rar-虚拟化文档类资源-CSDN下载
一个K8S集群由两部分构成 master节点和node节点。master节点主要负责集群的控制,对pod进行调度,已经令牌管理等等功能。node节点主要是负责干活,启动容器、管理容器。master节点和node节点一般不要部署在一台机器上。实际生产上,从高可用考虑,是需要部署多个master节点的。将这张图抽象一下,大约是这个样子:
2、集群架构图:
Kubernetes集群架构图如下,本次搭建暂不部署NFS和docker私有仓库。
3、集群服务器:
本地搭建kubernetes集群采用3台虚拟机,一台为master,两台为node。
集群角色 | 主机名称 | IP地址 | CPU/内存 | 软件 |
master | k8s-master | 192.168.137.129 | 2核/2GB | Docker Kubelet Etcd kube-apiserver kube-controller-manager kube-scheduler |
node | k8s-node-01 | 192.168.137.130 | 2核/2GB | Docker Kubelet kube-proxy Flannel |
node | k8s-node-02 | 192.168.137.131 | 2核/2GB | Docker Kubelet kube-proxy Flannel |
注意:master节点所在的服务器最低是2核的,不然安装会报错。
4、修改主机名称:
说明:在集群中所有服务器,均需要如下操作:
修改/etc/hostname文件,修改对应的名称为主机名称。
然后重新启动服务器。
5、修改hosts配置文件:
说明:在集群中所有服务器,均需要如下操作:
修改/etc/hosts文件添加主机名与IP映射关系:
6、关闭selinux:
说明:在集群中所有服务器,均需要如下操作:
修改/etc/selinux/config文件中SELINUX=的值为:disabled,然后重新启动服务器:
7、关闭防火墙:
说明:在集群中所有服务器,均需要如下操作:
执行以下命令:
关闭防火墙:
systemctl stop firewalld.service
关闭防火墙自启:
systemctl disable firewalld.service
8、关闭swap:
说明:在集群中所有服务器,均需要如下操作:
编辑/etc/fstab配置文件,将包含swap的行使用#进行注释,然后保存配置文件。最后重新启动服务器。
9、设置iptables网桥:
说明:在集群中所有服务器,均需要如下操作:
执行命令:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
执行命令:
sysctl --system
10、软件k8s/docker/dashboard版本:
软件k8s、docker、dashboard在版本上有一定的兼容关系:
K8s版本 | Docker版本 | Dashboard版本 |
V1.22 | 兼容最新到V20.10 | 暂时没有找到版本 |
V1.21 | 兼容最新到V20.10 | V2.3.1/V2.3.0 |
V1.20 | 有变化暂未懂,应该与V1.17相同 | V2.3.1/V2.3.0/V2.2.0/V2.1.0 |
V1.19 | 有变化暂未懂,应该与V1.17相同 | V2.0.5/V2.0.4 |
V1.18 | 咱无明确说明,应该与V1.17相同 | V2.0.3/V2.0.2/V2.0.1/V2.0.0 |
V1.17 | V1.13.1/V17.03/V17.06/V17.09/ V18.06/V18.09/V19.03 | V2.0.0-rc7/V2.0.0-rc6/V2.0.0-rc5/V2.0.0-rc4 |
V1.16 | V1.13.1/V17.03/V17.06/V17.09/ V18.06/V18.09 | V2.0.0-rc3/V2.0.0-rc2/V2.0.0-rc1/ V2.0.0-beta8/V2.0.0-beta7/V2.0.0-beta6/ V2.0.0-beta5 |
V1.15 | V1.13.1/V17.03/V17.06/V17.09/ V18.06/V18.09 | V2.0.0-beta4/V2.0.0-beta3/V2.0.0-beta2 |
V1.14 | V1.13.1/V17.03/V17.06/V17.09/ V18.06/V18.09 | V2.0.0-beta1 |
V1.13 | V1.11.1/V1.12.1/V1.13.1/ V17.03/V17.06/V17.09/V18.06 | 暂时没有找到版本 |
V1.12 | V1.11.1/V1.12.1/V1.13.1/ V17.03/V17.06/V17.09/V18.06 | 暂时没有找到版本 |
V1.11 | V1.11.x/V1.12.x/V1.13.x/V17.03.x | 暂时没有找到版本 |
V1.10 | V1.11.x/V1.12.x/V1.13.x/V17.03.x | V1.10.1/V1.10.0 |
V1.9 | V1.11.x/V1.12.x/V1.13.x/V17.03.x | V1.10.1/V1.10.0/V1.8.3 |
V1.8 | V1.11.2/V1.12.6/V1.13.1/V17.03.2 | V1.10.1/V1.10.0/V1.8.3 |
查看k8s与docker版本兼容关系操作步骤:
本次搭建的k8s为1.17.0,对应的docker版本需要1.13.1、17.03、17.06、 17.09、 18.06、18.09。本地安装的docker版本为:18.06.1。
软件k8s的github地址:https://github.com/kubernetes/kubernetes,通过CHANGELOG,点击低版本的log,比如:14、15等,搜索:docker version,可以查看到当前k8s版本兼容的docker版本。
查看k8s与dashboard版本兼容关系操作步骤:
注意查看k8s兼容的dashboard版本。本次搭建的k8s版本为1.17.0,通过查看dashboard官网上不同版本的dashboard软件包能够兼容的对应k8s版本,查找到对应的dashboard版本,本次dashboard版本使用的是v2.0.0-rc7。
官网dashboard地址:https://github.com/kubernetes/dashboard/releases
11、安装docker环境:
说明:在集群中所有服务器,均需要如下操作:
(1)在线安装docker:
本地安装的docker版本为:18.06.1。
① 卸载旧版本docker:
执行命令:
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
② 安装依赖:
执行命令:
yum install -y yum-utils device-mapper-persistent-data lvm2
③ 配置存储仓库:
执行命令:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
④ 安装docker:
在线安装的命令为:
yum -y install docker-ce-18.06.1.ce-3.el7
(2)离线rpm安装docker:
在一个有网,并且没安装过docker的服务器上执行yum命令,将需要的相关rpm格式安装包下载到服务器指定文件夹中,以便在无网服务器中安装:
① 获取离线包:
创建rpm软件存储目录:
mkdir -p /wocloud/soft/docker_rpm
安装依赖rpm包:
yum install -y yum-utils device-mapper-persistent-data lvm2
配置存储仓库:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
获取docker的rpm包:
yum -y install docker-ce-18.06.1.ce-3.el7 --downloadonly --downloaddir /wocloud/soft/docker_rpm
其它无网服务器需要安装时,将/wocloud/soft/docker_rpm中的所有rpm文件压缩到一个包中,然后上传到目标服务器,执行下面安装命令即可。
② 上传离线包:
将获取的docker的rpm离线包上传到目标服务器。
③ 执行安装包:
进入到docker的rpm离线包的文件夹中,执行如下安装命令:
执行命令:
rpm -ivh *.rpm --force --nodeps
④ 编写docker服务脚本:
编写docker.service服务文件;
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
⑤ 上传服务脚本及授权:
将docker.service文件上传到服务器/etc/systemd/system/中,并授权:
chmod 777 /etc/systemd/system/docker.service
⑥ 重新加载系统服务:
执行命令:
systemctl daemon-reload
(3)操作docker服务:
① 开机自启docker服务:
执行命令:
systemctl enable docker
② 启动docker服务:
执行命令:
systemctl start docker
(4)修改docker的Cgroup Driver:
执行命令:
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
(5)重新启动docker:
执行命令:
systemctl daemon-reload
执行命令:
systemctl restart docker.service
12、安装kubeadm/kubelet/kubectl:
说明:在集群中所有服务器,均需要如下操作:
(1)简介:
Kubeadm:用来初始化集群的指令。
Kubelet:在集群中的每个节点上用来启动Pod和容器等。
Kubectl:用来与集群通信的命令行工具。
kubeadm不能帮你安装或者管理kubelet或kubectl,所以你需要 确保它们与通过kubeadm安装的控制平面的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 然而,控制平面与kubelet间的相差一个次要版本不一致是支持的,但 kubelet 的版本不可以超过API服务器的版本。 例如,1.7.0版本的kubelet可以完全兼容1.8.0版本的API服务器,反之则不可以。
(2)官网安装教程:
官网安装教程地址:安装 kubeadm | Kubernetes
(3)在线安装:
① 添加阿里云YUM的软件源:
执行命令:
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
② 安装安装kubeadm/kubelet/kubectl:
执行命令:
yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
(4)离线安装:
① 安装crictl:
软件crictl是kubeadm/kubelet容器运行时接口(CRI)所需的。
软件下载:下载V1.17.0版本的crictl,与k8s版本一致,下载地址为:https://github.com/kubernetes-sigs/cri-tools/releases
软件上传:将下载的crictl软件包上传到服务器的自定义文件夹中。
软件解压:将crictl软件包进行解压。
文件移动:将crictl软件解压的crictl文件移动到/usr/bin中。
② 获取kubeadm/kubelet/kubectl离线包:
在一个有网,并且没安装过k8s的服务器上执行yum命令,将需要的相关rpm格式安装包下载到服务器指定文件夹中,以便在无网服务器中安装:
添加阿里云YUM的软件源:
执行命令:
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
下载离线安装包:
创建rpm软件存储目录:
mkdir -p /wocloud/soft/kubeadm
执行命令:
yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0 --downloadonly --downloaddir /wocloud/soft/kubeadm
其它无网服务器需要安装时,将/wocloud/soft/kubeadm中的所有rpm文件压缩到一个包中,然后上传到目标服务器,执行下面安装命令即可。
③ 上传kubeadm/kubelet/kubectl离线包:
将获取的kubeadm/kubelet/kubectl离线包上传到目标服务器。
④ 执行安装包:
进入到kubeadm/kubelet/kubectl离线包的文件夹中,执行如下安装命令:
执行命令:
rpm -ivh *.rpm --force --nodeps
⑤ 编写kubelet服务脚本:
编写kubelet.service服务文件;
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
[Service]
ExecStart=/usr/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10
[Install]
WantedBy=multi-user.target
⑥ 上传服务脚本及授权:
将kubelet.service文件上传到服务器/etc/systemd/system/中,并授权:
chmod 777 /etc/systemd/system/kubelet.service
⑦ 重新加载系统服务:
执行命令:
systemctl daemon-reload
(5)操作kubelet服务:
① 开启自启kubelet服务:
执行命令:
systemctl enable kubelet
13、集群k8s所需镜像和软件版本:
通过kubeadm搭建k8s集群所需要的相关镜像和软件,与k8s版本有对应的兼容关系,查看不同版本的k8s所需要的镜像和软件版本如下操作:
软件k8s的github地址:https://github.com/kubernetes/kubernetes,通过CHANGELOG,点击低版本的log,比如:17、18等,搜索:coredns、etcd等关键词,可以查看到当前k8s版本兼容的对应镜像版本。
K8s 版本 | Coredns版本 | Etcd 版本 | api 版本 | controller 版本 | proxy 版本 | scheduler 版本 | Pause 版本 | Cri-ctl 版本 |
V1.22 | V1.8.4 | V3.5.0 | V1.22.0 | V1.22.0 | V1.22.0 | V1.22.0 | V3.5 | V1.21.0 |
V1.21 | V1.8.0 | V3.4.13 | V1.21.0 | V1.21.0 | V1.21.0 | V1.21.0 | V3.4.1 | V1.20.0 |
V1.20 | V1.7.0 | V3.4.13 | V1.20.0 | V1.20.0 | V1.20.0 | V1.20.0 | V3.4 | V1.19.0 |
V1.19 | V1.7.0 | V3.4.9 | V1.19.0 | V1.19.0 | V1.19.0 | V1.19.0 | V3.2 | V1.18.0 |
V1.18 | V1.6.7 | V3.4.3 | V1.18.0 | V1.18.0 | V1.18.0 | V1.18.0 | V3.2 | V1.17.0 |
V1.17 | V1.6.5 | V3.4.3 | V1.17.0 | V1.17.0 | V1.17.0 | V1.17.0 | V3.1 | V1.17.0 |
V1.16 | V1.6.2 | V3.3.15 | V1.16.0 | V1.16.0 | V1.16.0 | V1.16.0 | —— | V1.14.0 |
V1.15 | V1.3.1 | V3.3.10 | V1.15.0 | V1.15.0 | V1.15.0 | V1.15.0 | —— | V1.14.0 |
V1.14 | V1.3.1 | V3.3.10 | V1.14.0 | V1.14.0 | V1.14.0 | V1.14.0 | —— | —— |
V1.13 | V1.2.6 | V3.2.24 | V1.13.0 | V1.13.0 | V1.13.0 | V1.13.0 | —— | —— |
V1.12 | V1.2.2 | V3.2.24 | V1.12.0 | V1.12.0 | V1.12.0 | V1.12.0 | —— | —— |
V1.11 | V1.1.3 | V3.2.18 | V1.11.0 | V1.11.0 | V1.11.0 | V1.11.0 | —— | —— |
V1.10 | —— | V3.1.12 | V1.10.0 | V1.10.0 | V1.10.0 | V1.10.0 | V3.1 | —— |
V1.9 | —— | V3.1.10 | V1.9.0 | V1.9.0 | V1.9.0 | V1.9.0 | —— | V1.0.0 |
V1.8 | —— | —— | V1.8.0 | V1.8.0 | V1.8.0 | V1.8.0 | —— | V1.0.0 |
14、部署k8s的单个master:
说明:在集群中master所在服务器,进行如下操作:
(1)在线安装:
执行命令:
kubeadm init \
--apiserver-advertise-address=192.168.137.129 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.17.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--v=5
参数说明:
参数 | 默认值 | 参数说明 |
--apiserver-advertise-address | 默认网络接口 | API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口。 |
--image-repository | "k8s.gcr.io" | 选择用于拉取控制平面镜像的容器仓库。 |
--kubernetes-version | "stable-1" | 为控制平面选择一个特定的 Kubernetes 版本。 |
--service-cidr | "10.96.0.0/12" | 为服务的虚拟 IP 地址另外指定 IP 地址段 |
--pod-network-cidr | 无 | 指明 pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDRs。 |
(2)离线安装:
在有网的服务器上下载k8s所需的相关镜像,将对应的镜像导出到服务器指定文件夹中,以便在无网服务器中能够导入镜像,进行使用:
① 下载k8s镜像:
从国内镜像源下载镜像:
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.17.0
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.0
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.0
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.0
docker pull registry.aliyuncs.com/google_containers/pause:3.1
docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5
docker pull registry.aliyuncs.com/google_containers/etcd:3.4.3-0
② 导出镜像:
将修改为官方tag的镜像导入到tar压缩包中,执行命令:
docker save -o kube-proxy-v1.17.0.tar kube-proxy镜像ID registry.aliyuncs.com/google_containers/kube-proxy:v1.17.0
docker save -o kube-apiserver-v1.17.0.tar kube-apiserver镜像ID registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.0
docker save -o kube-controller-manager-v1.17.0.tar kube-controller-manager镜像ID registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.0
docker save -o kube-scheduler-v1.17.0.tar kube-scheduler镜像ID registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.0
docker save -o pause-3.1.tar pause镜像ID registry.aliyuncs.com/google_containers/pause:3.1
docker save -o coredns-1.6.5.tar coredns镜像ID registry.aliyuncs.com/google_containers/coredns:1.6.5
docker save -o etcd-3.4.3-0.tar etcd镜像ID registry.aliyuncs.com/google_containers/etcd:3.4.3-0
③ 导入镜像:
将上述导出的镜像包tar传输到需要的服务器上,然后通过docker命令将镜像包tar导入到docker本地仓库中,命令示例:
docker image load -i 镜像包tar文件名称
④ 检查镜像列表:
查看docker本地仓库中的镜像列表,执行命令:docker images
⑤ 部署master节点:
执行命令:
kubeadm init \
--apiserver-advertise-address=192.168.137.129 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.17.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--v=5
参数说明:
参数 | 默认值 | 参数说明 |
--apiserver-advertise-address | 默认网络接口 | API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口。 |
--image-repository | "k8s.gcr.io" | 选择用于拉取控制平面镜像的容器仓库。 |
--kubernetes-version | "stable-1" | 为控制平面选择一个特定的 Kubernetes 版本。 |
--service-cidr | "10.96.0.0/12" | 为服务的虚拟 IP 地址另外指定 IP 地址段 |
--pod-network-cidr | 无 | 指明 pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDRs。 |
⑥ 查看部署结果:
出现如下提示信息,表示k8s的master节点部署好了。
(3)生成kubelet环境配置文件:
执行命令:
mkdir -p $HOME/.kube
执行命令:
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
执行命令:
sudo chown $(id -u):$(id -g) $HOME/.kube/config
15、安装pod网络插件(CNI):
说明:在集群中master所在服务器,进行如下操作:
(1)下载flannel的yml配置文件:
在线flannel的yml文件地址:https://github.com/caoran/kube-flannel.yml/blob/master/kube-flannel.yml,通过该地址将该yml文件下载下来。
(2)上传yml配置文件:
将yml配置文件上传到需要的服务器上。
(3)拉取flannel镜像:
执行命令:
docker pull registry.cn-shanghai.aliyuncs.com/leozhanggg/flannel:v0.12.0-amd64
(4)重命名flannel镜像:
执行命令:
docker tag flannel镜像ID quay.io/coreos/flannel:v0.12.0-amd64
(5)删除旧flannel镜像:
执行命令:
docker rmi registry.cn-shanghai.aliyuncs.com/leozhanggg/flannel:v0.12.0-amd64
(6)生效yml配置文件:
在需要的服务器上,进入到yml配置文件所在的文件夹中,然后执行命令进行生效:kubectl apply -f kube-flannel.yml
16、加入k8s的nodes:
说明:在集群中node所在服务器,进行如下操作:
(1)如果是离线加入需要操作:
① 拉取kube-proxy镜像:
执行命令:
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.17.0
(2)拉取flannel镜像:
执行命令:
docker pull registry.cn-shanghai.aliyuncs.com/leozhanggg/flannel:v0.12.0-amd64
(3)重命名flannel镜像:
执行命令:
docker tag flannel镜像ID quay.io/coreos/flannel:v0.12.0-amd64
(4)删除旧flannel镜像:
执行命令:
docker rmi registry.cn-shanghai.aliyuncs.com/leozhanggg/flannel:v0.12.0-amd64
(5)向集群添加新节点:
① 查询token值:
说明:在集群中master所在服务器,进行如下操作:
执行命令:
kubeadm token list
② 新建token:
说明:在集群中master所在服务器,进行如下操作:
通过kubeadm初始化后,都会提供node加入的token。默认token的有效期为24小时,当过期之后,该token就不可用了,那么就新建一个token。
执行命令:
kubeadm token create
③ 查询discovery-token-ca-cert-hash值:
说明:在集群中master所在服务器,进行如下操作:
执行命令:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
④ 添加新节点到集群:
说明:在集群中node所在服务器,进行如下操作:
执行命令:
kubeadm join 192.168.137.129:6443 --token zz5xc1.svx9tw1msbbd2v2l --discovery-token-ca-cert-hash sha256:2232ff536c7a272d52dfbce2ba07fa947fee7bcf6724095ef3c6def5dc34374e
参数说明:
参数 | 默认值 | 参数说明 |
--token | 无 | 这个令牌用于建立控制平面节点与工作节点间的双向通信。格式为 [a-z0-9]{6}\.[a-z0-9]{16} - 示例:abcdef.0123456789abcdef |
--discovery-token-ca-cert-hash | 无 | 对基于令牌的发现,验证根 CA 公钥是否与此哈希匹配 (格式: "<type>:<value>")。 |
(6)安装pod网络插件(CNI):
说明:如果在master服务器上安装pod网络插件(CNI)是在node加入k8s之后的话,那么就不需要手动在node服务器上安装CNI了,因为在master上安装CNI时会在整个k8s集群上安装。
检查当前node服务器/etc/cni/net.d/10-flannel.conflist文件是否存在,如果存在就不需要执行以下操作了。如果没有就进行如下操作。
以下操作只是针对已经安装好CNI后,又往k8s集群中增加node节点:
由于安装pod网络插件(CNI)在节点加入k8s之前,因此不会在node上安装CNI,需要手动将master服务器上的/etc/cni/net.d/10-flannel.conflist文件拷贝到当前node服务器上的对应路径下。
然后在node节点上执行命令:
systemctl daemon-reload && systemctl restart kubelet
(7)查看node列表:
说明:在集群中master所在服务器,进行如下操作:
执行命令:
kubectl get node
17、测试验证k8s集群:
(1)拉取nginx镜像:
由于本次搭建没有使用私有镜像库,因此在每个node节点上,需要手动拉取以下nginx镜像。执行命令:
docker pull nginx
(2)创建nginx容器:
执行命令:
kubectl create deployment nginx --image=nginx
(3)暴露对外端口:
执行命令:
kubectl expose deployment nginx --port=80 --type=NodePort
(4)查询nginx是否运行成功:
执行命令:
kubectl get pod,svc
(5)浏览器测试访问:
在与k8s集群通网络段的windows服务器上的浏览器中,输入k8s集群的master或node节点IP及对应nginx映射出的端口号,进行访问,正常的话是可以访问到nginx欢迎页的。
(6)扩展nginx副本:
执行命令:
kubectl scale deployment nginx --replicas=3
(7)查看pod:
通过对nginx进行了扩展副本,然后查看nginx的pod是几个,是否生效,执行命令:
kubectl get pods
更多推荐
所有评论(0)