使用kubeadm搭建K8S

2023-05-16

文章目录

  • 一、环境准备
  • 二、master部署
  • 三、node节点

一、环境准备

master   192.168.195.180
node01   192.168.195.181
node02   192.168.195.182

1:在所有节点上安装Docker和kubeadm
2:部署Kubernetes Master
3:部署容器网络插件
4:部署 Kubernetes Node,将节点加入Kubernetes集群中
5:部署Dashboard Web页面,可视化查看Kubernetes资源

//所有节点,关闭防火墙规则,关闭selinux,关闭swap交换

[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# swapoff -a

//修改主机名

hostnamectl set-hostname master
hostnamectl set-hostname node01
hostnamectl set-hostname node02

//所有节点修改hosts文件

vim /etc/hosts
192.168.195.180 master
192.168.195.181 node01
192.168.195.182 node02

//所有节点将网桥的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   

//所有节点安装Docker/kubeadm/kubelet

//安装docker

yum install -y wget && 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

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl restart docker

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p
service network restart
systemctl restart docker

//安装kubeadm,kubelet和kubectl

//定义kubernetes源

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

yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0

//开机自启kubelet

systemctl enable kubelet.service

二、master部署

//初始化kubeadm(注意:master核心数至少为2)

kubeadm init \
--apiserver-advertise-address=192.168.195.180 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

提示:
...省略...
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.195.180:6443 --token 7jq4pr.uun93lkuxvwid6g8 \
    --discovery-token-ca-cert-hash sha256:b016be0179d0741256add374cbf8e5484565450b2a0ec763dc1269558d5a3945

//使用kubectl工具

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

//所有节点安装flannel(master节点复制kube-flannel.yml脚本)
//所有节点复制flannel.tar
//所有节点载入flannel镜像

docker load < flannel.tar 

7bff100f35cb: Loading layer  4.672MB/4.672MB
5d3f68f6da8f: Loading layer  9.526MB/9.526MB
9b48060f404d: Loading layer  5.912MB/5.912MB
3f3a4ce2b719: Loading layer  35.25MB/35.25MB
9ce0bb155166: Loading layer   5.12kB/5.12kB
Loaded image: chenyan/flannel:v0.11.0-amd64

//所有节点必须有flannel镜像

[root@master ~]# docker images
chenyan/flannel                                                   v0.11.0-amd64       ff281650a721        22 months ago       52.6MB

[root@master ~]# kubectl apply -f kube-flannel.yml 

[root@master ~]# kubectl get pods -n kube-system

NAME                             READY   STATUS    RESTARTS   AGE
coredns-bccdc95cf-c9w6l          0/1     Pending   0          25m
coredns-bccdc95cf-nql5j          0/1     Pending   0          25m
etcd-master                      1/1     Running   0          24m
kube-apiserver-master            1/1     Running   0          24m
kube-controller-manager-master   1/1     Running   0          24m
kube-flannel-ds-amd64-qkdfh      1/1     Running   0          37s
kube-proxy-qpz8t                 1/1     Running   0          25m
kube-scheduler-master            1/1     Running   0          24m

三、node节点

//node节点加入群集

kubeadm join 192.168.195.180:6443 --token 7jq4pr.uun93lkuxvwid6g8 \
    --discovery-token-ca-cert-hash sha256:b016be0179d0741256add374cbf8e5484565450b2a0ec763dc1269558d5a3945

//在master节点查看node节点添加

[root@master ~]# kubectl get nodes (需要等待一小会)
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   71m   v1.15.0
node01   Ready    <none>   99s   v1.15.0
node02   Ready    <none>   96s   v1.15.0

//在master查看所有系统pods资源

[root@master ~]# kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-bccdc95cf-c9w6l          1/1     Running   0          71m
coredns-bccdc95cf-nql5j          1/1     Running   0          71m
etcd-master                      1/1     Running   0          71m
kube-apiserver-master            1/1     Running   0          70m
kube-controller-manager-master   1/1     Running   0          70m
kube-flannel-ds-amd64-kfhwf      1/1     Running   0          2m53s
kube-flannel-ds-amd64-qkdfh      1/1     Running   0          46m
kube-flannel-ds-amd64-vffxv      1/1     Running   0          2m56s
kube-proxy-558p8                 1/1     Running   0          2m53s
kube-proxy-nwd7g                 1/1     Running   0          2m56s
kube-proxy-qpz8t                 1/1     Running   0          71m
kube-scheduler-master            1/1     Running   0          70m

//测试pod资源创建

[root@master ~]# kubectl create deployment nginx --image=nginx

[root@master ~]# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-554b9c67f9-z8zzc   1/1     Running   0          31s

//暴露端口提供服务

[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed

//查看服务

[root@master ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.0.0.1       <none>        443/TCP        74m
nginx        NodePort    10.0.211.221   <none>        80:31481/TCP   8s

//访问地址

http://192.168.195.181:31481/

//扩展3个副本

[root@master ~]# kubectl scale deployment nginx --replicas=3
deployment.extensions/nginx scaled

//查看pods资源

[root@master ~]# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
nginx-554b9c67f9-jbdpv   1/1     Running   0          45h
nginx-554b9c67f9-svksn   1/1     Running   0          45h
nginx-554b9c67f9-z8zzc   1/1     Running   0          45h

//在master节点(复制kubernetes-dashboard.yaml和dashboard.tar到/opt目录)

//在所有节点导入dashboard.tar (node节点也要加载导入镜像)

[root@master opt]# docker load < dashboard.tar 

fbdfe08b001c: Loading layer  122.3MB/122.3MB
Loaded image: chenyan/kubernetes-dashboard-amd64:v1.10.1

[root@master opt]# kubectl apply -f kubernetes-dashboard.yaml 

secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created

//查看所有容器运行

[root@master opt]# kubectl get pods,svc -n kube-system
NAME                                        READY   STATUS    RESTARTS   AGE
pod/coredns-bccdc95cf-c9w6l                 1/1     Running   0          2d8h
pod/coredns-bccdc95cf-nql5j                 1/1     Running   0          2d8h
pod/etcd-master                             1/1     Running   0          2d8h
pod/kube-apiserver-master                   1/1     Running   0          2d8h
pod/kube-controller-manager-master          1/1     Running   0          2d8h
pod/kube-flannel-ds-amd64-kfhwf             1/1     Running   0          2d7h
pod/kube-flannel-ds-amd64-qkdfh             1/1     Running   0          2d8h
pod/kube-flannel-ds-amd64-vffxv             1/1     Running   0          2d7h
pod/kube-proxy-558p8                        1/1     Running   0          2d7h
pod/kube-proxy-nwd7g                        1/1     Running   0          2d7h
pod/kube-proxy-qpz8t                        1/1     Running   0          2d8h
pod/kube-scheduler-master                   1/1     Running   0          2d8h
pod/kubernetes-dashboard-68cbfbd778-dgqt5   1/1     Running   0          38s  #一定要是Running

NAME                           TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
service/kube-dns               ClusterIP   10.0.0.10     <none>        53/UDP,53/TCP,9153/TCP   2d8h
service/kubernetes-dashboard   NodePort    10.0.171.42   <none>        443:30001/TCP            126m

//访问https://NodeIP:30001/ 测试访问

//创建service account并绑定默认cluster-admin管理员集群角色

[root@master opt]# kubectl create serviceaccount dashboard-admin -n kube-system



[root@master opt]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin



[root@master opt]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

Name:         dashboard-admin-token-tx8x8
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: fcc99ed6-59e7-43e4-aa86-0018a52a863f

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tdHg4eDgiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZmNjOTllZDYtNTllNy00M2U0LWFhODYtMDAxOGE1MmE4NjNmIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.IAQrPHVh08EsCD3JRSZTOjSoYWaX7hkSWtsK00TCXaNIqGqRCsdAL_SHHTbglLBMVE8BWpWt-G48YqkfAPHqWZ1epY1CPedPz9hzFIjmqBXRLxBTOMmhkzFJJSad8RpftcqItfV-awmxPKB2pnW8lP4ZBAvZzgs-PW-1gv5Bpt8NB2qnoxgoYXYtvFUvey91eZkb-5CDXAC3NOq8BZaChtGuWPqqtCMnOQie4bpd-4DBkt6nHVkEZWBUcfsjmZ9IpjI6ONRCWH337X568cWjW6cYna_HqyTPk0p9PH2HmhbUH4oTCd3N9j5GqiZPyx-yqJ-qkJ01hop7-o_nt3kr_Q

//最终使用token令牌直接登录网站

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用kubeadm搭建K8S 的相关文章

  • Harbor镜像仓库搭建

    1 安装docker comprose docker comprose是docker容器批量管理工具 curl L https get daocloud io docker compose releases download 1 25 0
  • Liveness、Readiness 和 Startup Probes

    liveness apiVersion v1 kind Pod metadata labels test liveness name liveness exec spec containers name liveness image k8s
  • minikube单机安装nfs服务

    1 安装 nfs server sudo apt get update sudo apt get install y nfs kernel server 2 创建目录 配置 IP 共享目录绑定 vim etc exports 新增 data
  • 十八. Kubernetes Ingress

    目录 一 Ingress 基础解释 二 ingressController 安装 六 ingress 使用示例 pathType 详细 annotations 基于k8s注解为 nginx 添加功能示例 路径重写 Session Affin
  • kubernetes集群更新证书(kubeadm方式)

    一 kubernets证书详情 1 查看证书 tree etc kubernetes pki etc kubernetes pki apiserver crt apiserver etcd client crt apiserver etcd
  • kubeadm方式部署k8s最新版本V1.26.2

    Kubernetes核心概念 Master主要负责资源调度 控制副本 和提供统一访问集群的入口 核心节点也是管理节点 Node是Kubernetes集群架构中运行Pod的服务节点 Node是Kubernetes集群操作的单元 用来承载被分配
  • CentOS 7 下 minikube 部署 && 配置

    CentOS 7 下 minikube 部署 配置 文章目录 CentOS 7 下 minikube 部署 配置 下载 安装 下载安装脚本 安装 minikube 启动 minikube 环境 安装 kubectl 工具 启动 miniku
  • kubeadm配置虚拟机k8s集群

    环境 centos7 vm pro windows terminal termius 虚拟机 硬件配置 2核2G 实验用 具体可根据电脑调整 配置3台 master01 node01 node02 通过克隆虚拟机直接复制 配置通一项以后建议
  • Kubernetes + Dashboard 集群搭建

    1 环境说明 基于kubeadm工具部署k8s 集群 还有基于二进制的部署方式但是需要单独部署k8s的每个组件比较繁琐 kubeadm是 Kubernetes官 提供的 于快速部署Kubernetes集群的 具 基于Kubernetes v
  • k8备份与恢复-Velero

    简介 Velero 是一款可以安全的备份 恢复和迁移 Kubernetes 集群资源和持久卷等资源的备份恢复软件 Velero 实现的 kubernetes 资源备份能力 可以轻松实现 Kubernetes 集群的数据备份和恢复 复制 ku
  • Kubernets原理分解

    主节点 master 快速介绍 master也要装kubelet和kubeproxy 前端访问 UI CLI kube apiserver scheduler controller manager etcd kubelet kubeprox
  • 基于minikube的k8s单机环境部署ThingsBoard

    1 minikube安装k8s单机版 https blog csdn net qq 39879126 article details 121587678 2 安装ThingsBoard 下载 https github com thingsb
  • kubeadm集群化部署多master节点(生产环境适用)

    一 背景介绍 k8s通过master集中式管理worknode的容器编排系统 而在生产环境为了维护高可用性 master的地位起到举无轻重的作用 一旦master节点失守 则会导致整个集群服务不可用 因此配置多master集群在生产环境非常
  • Kubernetes:将 Kops 集群与本地 Kubeadm 集群相结合

    我们目前有 2 个 Kubernetes 集群 在 AWS 上运行 Kops 的一种设置 在我们自己的硬件上运行 Kubeadm 的一种设置 我们希望将它们组合起来 只需要管理一个集群 主服务器最终可能位于 AWS 或我们的服务器上 两者都
  • kubernetes集群中的DNS解析问题

    我们有一个 kubernetes 集群 由 4 个工作节点和 1 个主节点组成 上worker1 and worker2我们无法解析 DNS 名称 但在其他两个节点中一切正常 我按照官方文档的说明进行操作here and 我意识到 core
  • 如何彻底卸载kubernetes

    我使用安装了 kubernetes 集群kubeadm按照此guide https kubernetes io docs setup independent create cluster kubeadm 一段时间后 我决定重新安装 K8s
  • 是否有重新启动集群的最佳实践

    我遵循亚历克斯埃利斯的优秀tutorial https gist github com alexellis fdbc90de7691a1b9edb545c17da2d975使用kubeadm在 Raspberry Pi 上启动 K8s 集群
  • 使用 kubeadm 为什么要手动生成证书?

    我正在尝试遵循这个tutorial https blog inkubate io install and configure a multi master kubernetes cluster with kubeadm 自己生成证书而不是依
  • kubernetes v1.7.1 kubeadm join 主机名“”无法到达错误

    今天 当我运行以下命令时 我使用 v1 7 1 重新创建了集群kubeadm join token 189518 c21306e71082d6ec命令 它给出以下错误 这使用了以前版本的 kubernetes 中的工作 这个版本有什么变化吗
  • 删除 node-role.kubernetes.io/master:NoSchedule 污点

    我可以输入什么 CLI 命令来删除node role kubernetes io master NoSchedule来自 Kubernetes 集群中主节点的污染 以下命令失败 lnxcfg ip 10 0 0 193 kubectl ta

随机推荐

  • RouterOS 通过NTH/PCC设置多线负载均衡及带宽叠加

    关于NTH的相关原理 xff0c 请大家移步RouterOS Nth与Passthrough 务必要多看几遍 xff0c 彻底把原理看明白了 xff0c 然后再上机实验就能收到事半功倍的效果 如果大家原理不明白 xff0c 仅靠看别人的文档
  • Windows及Ubuntu下安装PyCharm

    之前编写Python程序 xff0c 在Windows下面主要使用的记事本或者Python自带的IDLE工具 xff0c Ubuntu下主要是在VSCode中编写 xff0c 编写或调试程序都比较麻烦 xff0c 百度了一下 xff0c 目
  • android app 设置以太网静态Ip

    写文目的 公司是做工控和楼宇智能方面产品 xff0c 使用的设备有rk和全志平台 xff0c 运行的是android操作系统 xff0c 部分场景需要设置有线网络的静态Ip 所以针对这一需求做了如下工作 xff0c 并以此文作为总结 遇到的
  • python神经网络案例——CNN卷积神经网络实现mnist手写体识别

    转自 xff1a https blog csdn net luanpeng825485697 article details 79088938 全栈工程师开发手册 xff08 作者 xff1a 栾鹏 xff09 python教程全解 CNN
  • Java删除字符串中的指定字符

    Java删除字符串中的指定字符有以下两种方法 xff1a 1 替换函数 xff0c 替换成空白 String test 61 chaojimali test 61 test replace chaoji 2 截取函数 xff0c 删除字符
  • Spring MVC 异常,怎样显示比较友好?

    本文基于Spring MVC 注解 xff0c 让Spring跑起来 实施过程中完全没有任何异常 xff0c 测试过程中也没出错 xff0c 偏偏在客户试用过程中报错了 报错了 xff0c 怎样给客户友好界面 xff1f 两个方法 xff1
  • Android进程的内存管理分析

    尊重原创作者 xff0c 转载请注明出处 xff1a http blog csdn net gemmem article details 8920039 最近在网上看了不少Android内存管理方面的博文 xff0c 但是文章大多都是就单个
  • 简单了解5G

    什么是5G 一 5G的特点 xff1a 二 5G的8个关键技术指标 xff08 与4G作对比 xff09 三 5G的几个关键技术 一 动态自组织网络 xff08 SON xff09 xff08 二 xff09 软件定义网络 xff08 SD
  • MSTP、LACP、VRRP、DHCP、NAT综合实验技术文档

    MSTP LACP VRRP DHCP NAT综合实验技术文档 要求 xff1a 要求按照拓扑图配置MSTP VRRP DHCP NAT等相关命令使得图中所有终端能够网络互通 1 MSTP 43 链路聚合 正常情况下各VLAN流量路径要求如
  • 解决共享文件时出现 “mount error(13): Permission denied” 错误

    当在Windows 系统和 Linux 系统之间共享文件时出现如下的错误 xff1a root 64 localhost mount cifs 192 168 226 1 kugou data Password for root 64 19
  • shell 脚本汇总 (持续更新中)

    文章目录 1 计算从1到100所有整数的和2 提示用户输入一个小于100的整数 xff0c 并计算从1到该数之间所有整数的和3 求从1到100所有整数的偶数和 奇数和4 写个逛淘宝选购商品脚本 xff0c 每家商店有五种商品选购 xff08
  • RouterOS 重置密码

    如果RouterOS的密码忘记了 xff0c 大家不必惊慌 xff0c 本文就以Routeros 6 48 6为例给大家讲解一下X86平台下RouterOS的密码重置 xff0c 其实X86平台下各版本的重置步骤大致相同 都是找到user
  • Nginx+Tomcat 实现负载均衡、动静分离群集配置

    文章目录 一 Nginx 负载均衡实现原理二 Nginx 动静分离实现原理三 Nginx 43 Tomcat 动静分离 负载均衡配置步骤1 部署 Nginx 负载均衡服务器2 部署两台 Tomcat 应用服务器3 动静分离配置 一 Ngin
  • MySQL主从复制与读写分离报错与解决方案

    文章目录 报错一 xff1a java 的3306端口找不到报错二 xff1a 端口次数出现太多报错三 xff1a 在客户机中远程连接 amoeba服务器 代理访问mysql 时 xff0c 连接不上amoeba 当我在部署MySQL主从复
  • 超实用的ELK日志分析系统

    文章目录 前言 xff1a 一 ELK日志分析系统简介 xff08 一 xff09 日志服务器 xff08 二 xff09 ELK日志分析系统补充 xff1a xff08 三 xff09 日志处理步骤 xff08 四 xff09 Elast
  • 实用!!Openstack一键部署步骤

    文章目录 一 环境需求二 环境配置1 配置静态地址 主机名2 关闭 xff08 设置开机不启动 xff09 防火墙 核心防护 NetworkManager3 安装时间同步服务 同步阿里云时钟服务器 xff08 ntp1 ntp2 设置周期性
  • 自动化运维 ansible角色管理

    文章目录 一 Templates模块1 获取模板2 定义变量3 传入变量4 编写剧本 二 tags 模块1 编写tags标签剧本2 编写always标签剧本 三 role模块 xff08 一 xff09 roles内各目录含义解释 xff1
  • K8S之配置管理

    文章目录 一 Secret方式一 xff1a 方式二 xff1a 第一种 xff1a 使用secret中的变量导入到pod中第二种 xff1a 以volume的形式挂载到pod的某个目录下 二 ConfigMap创建方式一 xff1a ku
  • K8S之安全机制(角色授权)

    文章目录 一 安全机制 xff08 一 xff09 Service Account详解 xff08 二 xff09 apiserver使用的是token认证 二 第一模块 xff1a 认证 xff08 一 xff09 https证书认证 x
  • 使用kubeadm搭建K8S

    文章目录 一 环境准备二 master部署三 node节点 一 环境准备 master 192 168 195 180 node01 192 168 195 181 node02 192 168 195 182 1 xff1a 在所有节点上