使用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 的相关文章

随机推荐

  • 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 在所有节点上