安装--centos7上使用kubeadm安装三节点的k8s集群

2023-11-14

安装文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
参考:
https://blog.csdn.net/qq_34041723/article/details/115842607

1、集群规划
node002 192.168.20.132 master
node003 192.168.20.133 node1
node004 192.168.20.134 node2
资源:3c4g100G
系统:centos7.6(内核3.10.0)
版本:
docker-v18.06.1
k8s-v1.18.0

以下版本同样适用该步骤:
docker-v20.10.18
k8s-v1.21.14

2、准备环境:
#在初始化操作基础上再做以下操作:
# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.20.132 node002
192.168.20.133 node003
192.168.20.134 node004
EOF
# 将桥接的IPv4流量传递到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 # 生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com


3、所有节点安装Docker/kubeadm/kubelet
(1)安装Docker
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
$ systemctl enable docker && systemctl start docker
$ docker --version
Docker version 18.06.1-ce, build e68fc7a
$ cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
$ systemctl daemon-reload
$ systemctl restart docker


(2)添加阿里云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

(3)安装kubeadm,kubelet和kubectl
$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
$ systemctl enable kubelet

4、部署master
#在master执行
$ kubeadm init \
  --apiserver-advertise-address=192.168.20.132 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.18.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16

使用kubectl工具:(kubeadm init输出的kubectl相关命令)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get nodes


5、加入Kubernetes Node
#在node上执行(kubeadm init输出的kubeadm join命令)
kubeadm join 192.168.20.132:6443 --token to8n1j.m95bbrlvpp49cbfc \
    --discovery-token-ca-cert-hash sha256:b2140fdec7032372680e0eee83cc17d6a233f4991f28cacb0129c4f99760e227 

6. 部署CNI网络插件
#安装calico
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml

#验证所有数据
[root@node002 ~]#kubectl get po -A
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-75d555c48-tk5sd   1/1     Running   0          2m4s
kube-system   calico-node-79s9v                         1/1     Running   0          2m4s
kube-system   calico-node-89chs                         1/1     Running   0          2m4s
kube-system   calico-node-fsh4n                         1/1     Running   0          2m4s
kube-system   coredns-7ff77c879f-cmsz9                  1/1     Running   0          13m
kube-system   coredns-7ff77c879f-ggrvd                  1/1     Running   0          13m
kube-system   etcd-node002                              1/1     Running   0          13m
kube-system   kube-apiserver-node002                    1/1     Running   0          13m
kube-system   kube-controller-manager-node002           1/1     Running   0          13m
kube-system   kube-proxy-b8ccw                          1/1     Running   0          13m
kube-system   kube-proxy-dwn2h                          1/1     Running   0          10m
kube-system   kube-proxy-ndxpr                          1/1     Running   0          10m
kube-system   kube-scheduler-node002                    1/1     Running   0          13m
[root@node002 ~]#kubectl get nodes
NAME      STATUS   ROLES    AGE   VERSION
node002   Ready    master   14m   v1.18.0
node003   Ready    <none>   10m   v1.18.0
node004   Ready    <none>   10m   v1.18.0

7. 测试kubernetes集群
在Kubernetes集群中创建一个pod,验证是否正常运行:
$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-f89759699-l4tjt   1/1     Running   0          21m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        40m
service/nginx        NodePort    10.96.147.252   <none>        80:31331/TCP   21m
#验证:
http://192.168.20.132:31331/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安装--centos7上使用kubeadm安装三节点的k8s集群 的相关文章

  • Kubernetes - 滚动更新杀死旧的 Pod,而不启动新的 Pod

    我目前正在使用 Deployments 来管理 K8S 集群中的 pod 我的一些部署需要 2 个 pod 副本 一些需要 3 个 pod 副本 还有一些只需要 1 个 pod 副本 我遇到的问题是只有一个 pod 副本 我的 YAML 文
  • 如何使用fabric8 java客户端获取kubernetes服务帐户访问令牌?

    我已经在本地计算机中配置了 minikube 并将在外部使用 kubernetes 我已经在 kubernetes 中创建了一个服务帐户 并使用它的秘密我可以使用以下命令获取访问令牌 kubectl get secret
  • 获取 Pod 处于挂起状态的平均时间

    我正在尝试使用 prometheus 计算 pod 在 grafana 中处于挂起状态的平均时间 我可以使用此查询生成一个图表 以获取一段时间内处于挂起状态的 Pod 数量 sum kube pod status phase phase P
  • 更新 DaemonSet,无需像部署那样停机

    我想在任何节点上运行应用程序 每个节点应始终至少有一个实例 但允许更多实例 主要是在更新期间防止该 pod 和节点 停机 Kubernetes 部署更新通常通过启动一个新的 Pod 来进行 一旦可用 旧的 Pod 就会被终止 这很完美 但就
  • 我应该在 Kubernetes 前面添加 DMZ 吗?

    Kubernetes Ingress 是否足够安全 可以避免在 Kubernetes 前面添加 DMZ 来暴露 Pod 和服务 如果有人 黑进 Pod 会发生什么 Thanks 这是一个意见问题 所以我会用一个选项来回答 如果您遵循 这是非
  • microk8s加入节点没有效果

    我确实命令 om 主节点 microk8s add node From the node you wish to join to this cluster run the following microk8s join 192 168 0
  • 如何在 Helm 图表中配置 docker 入口点

    我有以下内容docker compose文件 我不明白如何设置working dir and entrypoint在掌舵deployment yaml 有人有关于如何执行此操作的示例吗 docker compose version 3 5
  • Spark 上的 Kubernetes 驱动程序 pod 清理

    我在 kubernetes 1 19 上运行 Spark 3 1 1 作业完成后 执行程序 Pod 就会被清理 但驱动程序 Pod 仍处于完成状态 驱动程序完成后如何清理 要设置任何配置选项吗 NAME READY STATUS RESTA
  • Kubernetes:没有定义端口的服务

    我想确认我们是否可以在 pod 中没有容器端口的情况下公开服务 在下面的示例中 pod 没有容器端口 但服务已定义端口 apiVersion v1 metadata name mypod namespace ggckad s8 labels
  • 在 AWS EKS 集群中安装 mongodb 时出错 - “运行 PreBind 插件 VolumeBinding:绑定卷:超时 > 等待条件”

    我尝试按照给定的链接在 EKS 集群中安装 mongodb 使用 mongodb kubernetes operator https github com mongodb mongodb kubernetes operator https
  • 如何在 Apache Airflow 中混合使用 Celery Executor 和 Kubernetes Executor?

    我有多个使用 Celery Executor 的 dag 但我希望使用 Kubernetes Executor 运行一个特定的 dag 我无法推断出一种良好且可靠的方法来实现这一目标 我有一个airflow cfg我在其中声明了Celery
  • 带有 Helm Charts 的蓝绿部署

    我们可以使用 Helm Charts 来部署应用程序 helm install name the release helm the service helm namespace myns 而我们冷 滚动升级 部署使用 helm upgrad
  • Google Cloud Kubernetes 访问私有 Docker Hub 托管映像

    是否可以将私有镜像从 Docker Hub 拉取到 Google Cloud Kubernetes 集群 是否建议这样做 或者我是否需要将我的私有映像也推送到 Google Cloud 我阅读了文档 但没有发现任何内容可以清楚地解释这一点
  • 如何从 Pod 中的容器内部获知 Pod 自己的 IP 地址?

    Kubernetes为每个容器分配一个IP地址 那么如何从Pod中的容器获取IP地址呢 我无法从文档中找到方法 编辑 我将在 Kubernetes 中运行 Aerospike 集群 并且配置文件需要有自己的IP地址 我正在尝试使用 conf
  • kubernetes kubectl 中的生成器是什么?

    当我想通过运行生成 yaml 时kubectl 它表示我应该表示 generator something命令内的标志 例如 要通过以下方式获取部署模板kubectl 我应该运行以下命令 kubectl run generator deplo
  • 找不到 Kubernetes 持久卷挂载

    我正在尝试创建并安装卷 但陷入困境 这部分创建存储 apiVersion v1 kind PersistentVolumeClaim metadata name pvclaim2 spec accessModes ReadWriteOnce
  • Ingress 未在 GKE 和 GCE 上获取地址

    创建入口时 不会生成地址 并且从 GKE 仪表板查看时 它始终位于Creating ingress地位 描述入口没有显示任何事件 我在 GKE 仪表板上看不到任何线索 有没有人有类似的问题或关于如何调试的任何建议 我的部署 yaml api
  • Kubernetes - 一个 Ingress 中的多个配置

    我在同一个 Kubernetes 集群中运行不同的应用程序 我希望多个域能够访问我的 Kubernetes 集群 并根据域进行重定向 对于每个域 我想要不同的注释 配置 如果没有注释 我的入口部署如下 apiVersion networki
  • Kubernetes Pod 预热以实现负载均衡

    我们有一个 Kubernetes 服务 其 Pod 需要一些时间来预热第一个请求 基本上 第一个传入请求将从 Redis 读取一些缓存值 并且这些请求可能需要更长的时间来处理 当这些新创建的 Pod 准备就绪并接收完整流量时 在从 Redi
  • 等待 pod 附加或挂载卷的超时已过期

    我在裸机上的 ubuntu 上安装 kubernetes 我部署了1个master和3个worker 然后部署 rook 一切工作正常 但是当我想在其上部署 wordpress 时 我收到此错误 无法为 Pod 挂载卷 wordpress

随机推荐