云计算与大数据——部署Kubernetes集群+完成nginx部署(超级详细!)

这篇具有很好参考价值的文章主要介绍了云计算与大数据——部署Kubernetes集群+完成nginx部署(超级详细!)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大数据与云计算——部署Kubernetes集群并完成nginx部署(超级详细!)

部署 Kubernetes 集群的基本思路如下:

  1. 准备环境:

    • 选择适合的操作系统:根据需求选择适合的 Linux 发行版作为操作系统,并确保在所有节点上进行相同的选择。
    • 安装 Docker:在所有节点上安装 Docker,它将用于容器化应用程序和组件。
    • 安装 Kubernetes 工具:安装 kubectlkubeadmkubelet 工具,这些工具将用于集群的管理和配置。
  2. 设置主节点 (Master Node):

    • 选择一个节点作为主节点:通常是从节点中选择一台作为主节点,可以是任意一台具备足够资源的机器。
    • 初始化主节点:使用 kubeadm init 命令初始化主节点,并获取生成的加入令牌 (join token)。
    • 设置网络插件:选择并安装适当的网络插件,例如 Flannel、Calico 或 Weave,以便节点之间能够进行网络通信。
  3. 添加从节点 (Worker Nodes):

    • 在每个从节点上运行加入命令:使用之前生成的加入令牌,在每个从节点上运行 kubeadm join 命令,将其加入到集群中。
    • 确认节点加入:在主节点上运行 kubectl get nodes 命令,确保所有节点都成功加入集群。
  4. 部署网络插件:

    • 根据选定的网络插件,按照其特定的部署和配置方式进行操作。这将确保各节点之间可以进行网络通信,并提供 Kubernetes 集群的网络功能。
  5. 部署其他组件和应用程序:

    • 部署其他所需的核心组件,如 kube-proxy 和 kube-dns/coredns。
    • 部署您的应用程序或服务,可以使用 Kubernetes 的 Deployment、Service 或其他资源类型来管理它们。
  6. 验证集群状态:

    • 运行 kubectl get nodes 和其他 kubectl 命令,以确保集群中的节点和组件正常工作。
    • 测试应用程序:在集群中部署的应用程序上运行测试,确保它们能够正常运行并与其他组件交互。

以上是部署 Kubernetes 集群的基本思路。具体的步骤和细节可能会因环境和需求而有所不同,但这个简要说明可以帮助您了解部署过程的大致流程。

接下来我们进行实操部署kubernetes集群和完成nginx服务。

开始部署Kubernetes集群

以下以root登录运行命令:

一、在所有节点安装和配置docker

1.安装docker所需的工具

yum install -y yum-utils device-mapper-persistent-data lvm2

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
2.配置阿里云的docker源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
3.安装docker-ce、docker-ce-cli、containerd.io

yum install -y docker-ce docker-ce-cli containerd.io

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
4.启动docker

systemctl enable docker	#设置开机自启
systemctl start docker		#启动docker

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
5. 设置镜像加速器
#设置镜像加速器,新建daemon.json文件(参考文献1)

cat <<EOF > /etc/docker/daemon.json
{
    "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
6.生成并修改containerd 的默认配置文件/etc/containerd/config.toml(参考文献2)

containerd config default > /etc/containerd/config.toml

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
将sandbox_image = “registry.k8s.io/pause:3.6”
修改为sandbox_image = “k8simage/pause:3.6”
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

重启 containerd 服务

systemctl daemon-reload  
systemctl restart containerd.service 

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
注:此步骤可以解决failed to pull image \“registry.k8s.io/pause:3.6\”; Failed to create sandbox for pod :拉取 registry.k8s.io/pause:3.6 镜像等问题(具体错误问题可以通过运行以下命令查看日志:journalctl -xeu kubelet)
7.关闭防火墙

systemctl disable firewalld
systemctl stop firewalld

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
8.关闭selinux
#临时禁用selinux

setenforce 0

#或永久关闭,修改/etc/sysconfig/selinux文件设置

sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
9.禁用交换分区

swapoff -a

#或永久禁用,注释掉/etc/fstab文件swap那一行

sed -i ‘s/.*swap.*/#&/’ /etc/fstab

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
10.修改内核参数
将桥接的IPv4流量传递到iptables的链(有一些ipv4的流量不能走iptables链,因为linux内核的一个过滤器,每个流量都会经过他,然后再匹配是否可进入当前应用进程去处理,所以会导致流量丢失),配置k8s.conf文件(k8s.conf文件原来不存在,需要自己创建的)

cat<<EOF> /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
vm.swappiness=0                  
EOF

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

sysctl --system 

#重新加载系统全部参数,或者使用sysctl -p亦可
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
文献1:https://yebd1h.smartapps.cn/pages/blog/index?blogId=123605246&_swebfr=1&_swebFromHost=bdlite

二、在全部节点(个别单独说明的除外)上安装配置Kubernetes

1.配置Kubernetes阿里云源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
2.安装kubeadm、kubectl、kubelet(kubeadm和kubectl都是工具,kubelet才是系统服务,参考文献1)

yum install -y kubelet-1.14.2
yum install -y kubeadm-1.14.2

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
3.启动kubelet服务

systemctl enable kubelet && systemctl start kubelet

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
4. 生成当前版本的初始化配置文件到 /etc/kubernetes 目录下

kubeadm config print init-defaults > /etc/kubernetes/init-default.yaml

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
1)指定kube-apiserver广播给其他组件的IP地址
这个参数需要设置为主节点的IP地址,以确保其他节点可以访问到kube-apiserver
即:advertiseAddress: 1.2.3.4 -> advertiseAddress: [宿主机ip(内网)]
此项根据自己主节点的IP地址具体设定,本机设置的是:

advertiseAddress:192.168.95.20

2)指定安装镜像的仓库源
建议使用国内镜像如阿里云:
imageRepository: registry.aliyuncs.com/google_containers
注:我们开始会遇到以下初始化问题:

failed to pull image registry.k8s.io/kube-apiserver:v1.26.3

此设置结合kubeadm init命令的以下参数可以解决该问题:

--image-repository=registry.aliyuncs.com/google_containers

即初始化时:kubeadm init --image-repository=registry.aliyuncs.com/google_containers
初始化在后面
3)编辑/etc/hosts,添加一行:

192.168.95.20 k8s.cnblogs.com #需根据自己主机的IP地址进行修改

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
总体上第4步可以解决[kubelet-check] Initial timeout of 40s passed.这个复杂问题。
参考文献2:
https://blog.csdn.net/weixin_52156647/article/details/129765134
4)统一Kubernetes和docker的Cgroup Driver为systemd
修改/etc/docker/daemon.json 文件,添加如下参数:

vim /etc/docker/daemon.json 

#为了保持所有节点docker配置一致,所以其它节点的docker也改了

{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],	
"exec-opts": ["native.cgroupdriver=systemd"]
}

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
重新加载 Docker

systemctl daemon-reload
systemctl restart docker

5.在主节点上初始化Kubernetes
初始化之前先运行:

systemctl restart docker

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
kubelet命令补全

echo "source <(kubectl completion bash)" >> ~/.bash_profile
source .bash_profile

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
拉取镜像
列出Kubernetes集群启动所需的镜像列表。这些镜像包括控制平面组件(如kube-apiserver、kube-controller-manager和kube-scheduler)以及其他一些必要的组件(如etcd、CoreDNS等)
,并修改tag与所需版本保持一致。

kubeadm config images list

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
设置镜像源和脚本程序

vim image.sh
#!/bin/bash
url=registry.cn-hangzhou.aliyuncs.com/google_containers
version=v1.14.2
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
  docker pull $url/$imagename
  docker tag $url/$imagename k8s.gcr.io/$imagename
  docker rmi -f $url/$imagename
done

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
运行脚本

chmod u+x image.sh
./image.sh
docker images

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
docker images查看docker仓库中的镜像,发现所有的镜像都是以registry.aliyuncs.com/google_containers/开头,有的与kubeadm config images list中要求的镜像名称不一样。我们要修改镜像名称,即对镜像重新打个tag

docker images

显示结果:

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.14.10 k8s.gcr.io/kube-apiserver:v1.14.10

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.14.10 k8s.gcr.io/kube-controller-manager:v1.14.10

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.14.10 k8s.gcr.io/kube-scheduler:v1.14.10

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.14.10 k8s.gcr.io/kube-proxy:v1.14.10

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
修改完tag后再次查看发现镜像名和版本号与"kubeadm config images list"命令列出的Kubernetes集群启动所需的镜像列表保持一致了。
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
另一种方法我们也可以一个一个拉取镜像

kubeadm config images list

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.40.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.40.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.40.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.40.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
再次查看docker镜像:

docker images

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
进行重置k8s集群

kubeadm reset

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
以解除端口占用,删除之前初始化时生成的配置文件等。
然后开始正式执行集群初始化:

kubeadm init --apiserver-advertise-address 192.168.95.20 --pod-network-cidr=10.244.0.0/16

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
执行信息出现:Your Kubernetes control-plane has initialized successfully!成功完成集群初始化。
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
6. 配置节点
以下3条命令使用普通用户:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

7.注意从节点加入时的命令和秘钥

kubeadm join 192.168.95.20:6443 --token 7em598.2cwgsvdgga5fohae \
    --discovery-token-ca-cert-hash sha256:9fca7635ebe04c5fe7eccb8c30974ff0e4f7cb08785d1132956be9a800ded442

妥善保存此秘钥。
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
8.查看节点运行情况(NotReady状态)

kubectl get nodes

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

三、安装配置从节点Kubernetes

1.根据以上第一、二的相关步骤安装从节点软件及进行配置。
host1基本配置:
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
docker version
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

Kubectl version
kubeadm version
kubelet version

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
2.从节点加入集群(使用root用户)

kubeadm join 192.168.95.20:6443 --token 7em598.2cwgsvdgga5fohae \
--discovery-token-ca-cert-hash sha256:9fca7635ebe04c5fe7eccb8c30974ff0e4f7cb08785d1132956be9a800ded442

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
注:此步骤一般会遇到以下问题:

[ERROR CRI]: container runtime is not running:

这是因为用安转包安装的containerd,会默认禁用它作为容器运行时:
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
解决:
1)使用systemctl status containerd 查看状态
Active: active (running) 表示容器运行时正常运行
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
2)查看 /etc/containerd/config.toml文件,这个是容器运行时的配置文件
3)

vim /etc/containerd/config.toml

如果看到了这行:disabled_plugins : ["cri"]
将这行用#注释或者将"cri"删除:
#disabled_plugins : [“cri”]或者
disabled_plugins : []
4)重启容器运行时

systemctl restart containerd

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
参考文献3:https://blog.csdn.net/weixin_52156647/article/details/129758753

四、在主节点上查看加入的从节点并解决随后的问题

kubectl get nodes

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

1.此时STATUS显示NotReady
解决:
1)所有集群的节点进行重装kubernetes-cni:

yum reinstall -y kubernetes-cni

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
2)在主节点上安装网络:
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml,其中要将185.199.108.133 raw.githubusercontent.com加入etc/hosts
(参考文献五:https://www.cnblogs.com/sinferwu/p/12726833.html)
3. 运行kubectl get nodes时出现的问题
1)couldn’t get current server API group list:
解决:
不能用root运行该命令。
2)kubernetes-admin问题
K8S输入 kubectl get nodes显示The connection to the server localhost:8080 was refused - did you specify the right host or port?
出现这个问题的原因是 kubectl 命令需要使用 kubernetes-admin 来运行。可能是系统环境不干净导致,例如重装 k8s 前未完全清空配置等。
解决方法:
(1)将主节点初始化后生成的/etc/kubernetes/admin.conf文件复制到从节点相应目录。

scp /etc/kubernetes/admin.conf  host1:/etc/kubernetes/

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
(2)在所有节点上设置环境变量并更新

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile 
source ~/.bash_profile

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

在https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP。

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
再次运行

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

安装flannel成功!
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
再次通过kubectl get nodes命令获取集群节点列表时候发现host1集群状态一直处于NotReady状态,通过查看日志发现报错:

journalctl -f -u kubelet

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
由日志信息可知,报错原因是不能从/var/llib/kubelet/config.yaml下载到kubelet的配置。

错误原因估计是我之前没有做 kubeadm init就运行了systemctl start kubelet
我们可以尝试将token更新,重新生成token,代码如下:

kubeadm token create --print-join-command

在主节点g更新token
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
复制输出的内容,在hsot1中运行
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
成功解决问题!
集群都是Ready状态!
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
参考文献六:https://www.cnblogs.com/eastwood001/p/16318644.html

五、测试Kubernetes

1.在主节点上运行:

kubectl create deployment nginx --image=nginx #创建一个httpd服务测试

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

kubectl expose deployment nginx --port=80 --type=NodePort #端口就写80,如果你写其他的可能防火墙拦截了

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos

kubectl get svc,pod   #对外暴露端口

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
2.使用主节点IP地址加保留的端口访问Nginx主页:
比如:

192.168.95.20:21729

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
显示连接失败
使用命令

kubectl describe pod nginx-77b4fdf86c-krqtk

显示结果:

open /run/flannel/subnet.env: no such file or directory 

发现我缺少相关cni网络配置文件。
我们要仔细检查查看各个节点,包括主节点是否有/run/flannel/subnet.env,内容应该是类似如下:

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

通过检查报错日志发现我缺少相关cni网络配置文件。

创建cni网络相关配置文件:
mkdir -p /etc/cni/net.d/
cat <<EOF> /etc/cni/net.d/10-flannel.conf
{"name":"cbr0","type":"flannel","delegate": {"isDefaultGateway": true}}
EOF

这里我们使用 cat 命令和重定向操作符 (<<),将 {“name”:“cbr0”,“type”:“flannel”,“delegate”: {“isDefaultGateway”: true}} 内容写入到 /etc/cni/net.d/10-flannel.conf 文件中。

mkdir /usr/share/oci-umount/oci-umount.d -p
mkdir /run/flannel/
cat <<EOF> /run/flannel/subnet.env
FLANNEL_NETWORK=10.199.0.0/16
FLANNEL_SUBNET=10.199.1.0/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
EOF

这里在 <<EOF 和 EOF 之间,有多行文本,每行都包含一个环境变量的定义。具体来说:
FLANNEL_NETWORK=10.199.0.0/16 定义了名为 FLANNEL_NETWORK 的环境变量,并将其设置为 10.199.0.0/16。
FLANNEL_SUBNET=10.199.1.0/24 定义了名为 FLANNEL_SUBNET 的环境变量,并将其设置为 10.199.1.0/24。
FLANNEL_MTU=1450 定义了名为 FLANNEL_MTU 的环境变量,并将其设置为 1450。
FLANNEL_IPMASQ=true 定义了名为 FLANNEL_IPMASQ 的环境变量,并将其设置为 true。
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
若哪个节点没有该文件那就拷贝一份,再次进行部署,应该就不会报这个错了。
我们在host1节点检查一下:

cat /run/flannel/subnet.env
cat  /etc/cni/net.d/10-flannel.conf

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
通过命令查看到从节点已经有了相关cni网络相关配置文件。
如果缺少这些重要配置文件也会在集群日志中报错:

cni config uninitialized
5月 06 12:44:06 master kubelet[48391]: W0506 12:44:06.599700   48391 cni.go:213] Unable to update cni config: No networks found in /etc/cni/net.d
5月 06 12:44:07 master kubelet[48391]: E0506 12:44:07.068343   48391 kubelet.go:2170] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
上面配置都没问题的话,
最后也是成功显示nginx

Kubectl get nodes

这里的kubectl get nodes 命令将返回一个表格,其中包含了集群中所有节点的相关信息,如节点名称、状态、角色(master/worker)等。
k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
浏览器网址输入

192.168.95.25:30722

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
或者输入CLUSTER-IP:

10.100.184.180

k8s集群部署nginx,系统运维,大数据,Docker,云计算,大数据,kubernetes,nginx,运维,负载均衡,centos
这样我们就成功部署Kubernetes集群,完成nginx部署了!

这些都是亲测过的,按照上面正常操作都可以成功部署,祝各位一切顺利。
最后暑假祝各位一切顺利,学的扎实通透,玩得开心。文章来源地址https://www.toymoban.com/news/detail-738616.html

到了这里,关于云计算与大数据——部署Kubernetes集群+完成nginx部署(超级详细!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算与大数据处理:分布式系统与集群技术

    随着互联网的不断发展,数据的产生和存储量日益庞大,传统的单机计算方式已经无法满足需求。因此,分布式系统和集群技术逐渐成为了解决大数据处理问题的重要手段。 分布式系统是指由多个独立的计算机节点组成的系统,这些节点可以在网络上进行通信和协同工作。集

    2024年04月12日
    浏览(50)
  • 【云计算】3台虚拟机完成Spark Yarn集群部署并编写Scala应用程序实现单词计数统计

    目录 1.准备环境          2.安装spark并配置环境 3.安装scala并配置环境 4.安装编辑器idea 5.编写Spark Scala应用程序实现单词计数统计 6.Spark On Yarn配置 虚拟机:vmware workstation16 linux版本:centOS 7 linux 分布式环境:hadoop 3.1.1 (1)创建三台虚拟机,并准备好linux环境和hadoop,确保h

    2023年04月15日
    浏览(44)
  • 【云计算与大数据技术】云交付模型、云部署模型、云计算优势与挑战、应用的讲解(超详细必看)

    云计算主要分为三种交付模型,而且这三种交付模型主要是从用户体验的角度出发的,分别是软件即服务(SaaS),平台即服务(PaaS),基础设施即服务(IaaS),对于普通用户而言,他们主要面对的是SaaS这种服务模式,而且几乎所有的云计算服务最终的呈现形式都是SaaS。  

    2023年04月09日
    浏览(37)
  • [Kubernetes]8. K8s使用Helm部署mysql集群(主从数据库集群)

    上一节讲解了K8s包管理工具Helm、使用Helm部署mongodb集群(主从数据库集群),这里来看看 K8s使用Helm部署mysql集群(主从数据库集群) 无本地存储: 当重启的时候,数据库消失 (1).打开官网的应用中心 打开应用中心,搜索mysql (2).安装  1).添加repo仓库 2).安装 具体命令如下:  3).自动生成

    2024年01月21日
    浏览(70)
  • 使用nginx搭建kubernetes高可用集群

    本文使用 nginx 搭建 kubernetes 高可用集群。 服务器规划(本实验采用虚拟机): ip hostname 说明 192.168.43.200 master master 192.168.43.201 slave1 slave 192.168.43.202 slave2 slave 192.168.43.203 master2 master 192.168.43.165 nginx nginx主机 2.1 关闭防火墙 2.2 关闭 selinux 2.3 关闭 swap 2.4 设置主机名称 使用命令 h

    2024年02月10日
    浏览(66)
  • 使用nginx+keepalived搭建kubernetes高可用集群

    本文使用 nginx+keepalived 搭建 kubernetes 高可用集群。 当使用 nginx 作为应用服务器前端软负载的时候,可以通过 keepalived 来实现虚拟IP(Virtual IP,VIP)在主、备 节点之前的漂移,其中VIP需要在申请服务器的时候进行创建。 1)、当主节点 nginx 服务无法启动,或者主节点服务器宕机,

    2024年02月15日
    浏览(43)
  • 大数据与容器化技术指南:Docker、Kubernetes与大数据生态常用命令大全

            本书涵盖了Docker和Kubernetes的基本概念及常用命令,以及Zookeeper、HDFS、YARN、YARN资源池、HBase、HBase集成Phoenix、Hive、Kafka、Spark、Flink等大数据技术的常用命令。 安装kerberos客户端 yum install krb5-workstation -y 安装Zookeeper客户端 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6

    2024年01月21日
    浏览(56)
  • 大数据云计算——Docker环境下部署Hadoop集群及运行集群案列

    本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先,文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性,以及为何选择在Docker环境下部署Hadoop集群。接着,阐述了在Docker中配置和启动Hadoop集群所需的步骤和技术要点。 在展示部署过程中,

    2024年02月04日
    浏览(43)
  • Kubernetes高可用集群二进制部署(六)Kubernetes集群节点添加

    Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署(二)ETCD集群部署 Kubernetes高可用集群二进制部署(三)部署api-server Kubernetes高可用集群二进制部署(四)部署kubectl和kube-controller-man

    2024年02月14日
    浏览(47)
  • 接上篇文章,完成Hadoop集群部署实验

    基于开源软件搭建满足企业需求的Hadoop生态系统,构建基础的大数据分析平台。 本实验采用4台机器搭建Hadoop完全分布式集群,其中1台机器作为Master节点,另外三台机器作为Slave节点,主机名分别为Slave1,Slave2和Slave3。 Hadoop集群部署 HDFS分布式文件系统管理 Hadoop2.7.3 VMware Work

    2024年02月10日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包