【分享】windows11 vmware centos7 搭建k8s完整实验

news/2024/7/4 8:10:09 标签: kubernetes, 容器, 云原生

概述

    开年第一天,补充下自己的技术栈。

参考文章:

k8s安装 - 知乎

【Kubernetes部署篇】K8s图形化管理工具Dasboard部署及使用_k8s可视化管理工具-CSDN博客

centos7环境下安装k8s 1.18.0版本带dashboard界面全记录(纯命令版)_sysconfig1.18.0版本-CSDN博客

侵删。

步骤

一、安装vmware

略,随手一堆教程

注意避坑windows10+的hype-v和低版本vmware共存的问题,我记得高版本vmware已经没有这个问题了。

二、vmware安装centos

略,随手一堆教程

(这里包含vmware安装centos,桥接网络,开放ssh访问等内容)

需要三个节点(安装好其中一个后,yum install vim, yum install yum-utils),然后关闭虚拟机电源,克隆,完整克隆

分别编辑三个节点的ip信息。

虚拟机设置为桥接模式,使用mobaxterm等进行ssh链接。vmware开放ssh访问等需要自行百度。

三、安装docker

增加docker源,如果2中没有安装yum-utils需要先安装

yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo    —这里使用的是阿里云的仓库

安装最新版本

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

启动docker

systemctl start docker
systemctl enable docker --now      --启动docker,并在开机启动中加入

 查看状态

systemctl status docker
 四、安装k8s

安装k8s前配置修改

----------------------------------------(三个节点都要执行) start --------------------------------------------------

修改主机名:

hostnamectl set-hostname xxxx

 关闭selinux

将 SELinux 设置为 permissive 模式(相当于将其禁用)
setenforce 0    --临时关闭
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config    --永久关闭

 关闭swap

关闭swap
swapoff -a    --临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab    --永久关闭

允许 iptables 检查桥接流量 

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF


cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system.   --重启

 关闭防火墙

5.关闭防火墙
为保证后续端口访问方便,这里关闭防火墙
systemctl stop firewalld     --临时关闭防火墙
systemctl disable firewalld  --永久关闭防火墙

k8s下载地址 

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
   http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

安装 kubelet、kubeadm、kubectl 

yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

 默认启动

systemctl enable --now kubelet

 下载镜像

tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
   
--执行脚本
chmod +x ./images.sh && ./images.sh

--查看下载的镜像
docker images

初始化主节点:

#所有机器添加master域名映射,以下需要修改为自己的
echo "xxx.xxx.xxx.xxx  cluster-endpoint" >> /etc/hosts    --xxx.xxx.xxx.xxx 地址为master的ip信息 --cluster-endpoint 可以随便起名
添加上述命令含义:需让所有节点知道master是哪一个
#主节点初始化
kubeadm init \
--apiserver-advertise-address=xxx.xxx.xxx.xxx \    --xxx.xxx.xxx.xxx为master节点的ip
--control-plane-endpoint=cluster-endpoint \        --cluster-endpoint 上面起的名字
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \   --镜像仓库名字
--kubernetes-version v1.20.9 \  --kubernetes的版本号
--service-cidr=10.96.0.0/16 \  
--pod-network-cidr=192.168.0.0/16

note:这里建议service和pod的ip信息不要改,如果要改,service和pod的ip段不能重复,也不能和服务器的ip段重复

 如果拉取镜像失败,使用 --image-repository registry.aliyuncs.com/google_containers
出现success之后,记得复制token一类的,如下:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

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 10.9.200.52:6443 --token v4pesl.jc5jz9y8gx495lv8 \
    --discovery-token-ca-cert-hash sha256:d27c226ae6d16b5c70638df2d1d40459f73ae4cbdc3f548e088049a97707c1e3

----------------------------------------(三个节点都要执行) end -------------------------------------------------- 

主节点执行:

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

查看主节点状态不对,目前是NotReady,这个问题是因为网络组件未配置导致的,在主节点初始化日志中有这一步

kubectl get pods -A

 下载 https://docs.projectcalico.org/v3.20/manifests/calico.yaml

上传到主节点,或者直接wget

使用命令加载yaml配置文件
kubectl apply -f calico.yaml

 在查看应该就是ready了

kubectl get nodes

从节点加入主节点:

把安装成功后,复制保存下来的话抠出 

kubeadm join xxxx

出现如下,即为成功

 

 五、安装k8s-dashboard

wget https://gitee.com/qinziteng/K8S/raw/master/YMAL/recommended.yaml

上传到master,并且编辑vim recommended.yaml 找到Service 8443这条

增加type:NodePort,原本默认是本机访问,增加这个后,可以方便我们浏览器访问

修改完成后

kubectl apply -f recommended.yaml

4、查看状态 默认在 kubernetes-dashboard 名称空间下:

kubectl get pods -n kubernetes-dashboard


5、查看Service暴露端口,我们使用这个端口进行访问:

kubectl get svc -n kubernetes-dashboard

 

通过Token令牌登入
1、创建一个 ClusterRoleBinding 对象,并赋予cluster-admin权限,即访问整个集群的权限,包括查看和修改所有资源的权限

kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard


命令参数解析:

create:创建资源的命令
clusterrolebinding:资源类型,表示创建一个 ClusterRoleBinding 对象
dashboard-cluster-admin:ClusterRoleBinding 对象的名称
clusterrole=cluster-admin:指定要绑定的 ClusterRole,这里是 cluster-admin,即具有完全访问权限的 ClusterRole。
serviceaccount=kubernetes-dashboard:kubernetes-dashboard:指定要绑定的 ServiceAccount,这里是 kubernetes-dashboard 命名空间下的 kubernetes-dashboard ServiceAccount
查看创建的secret

kubectl get secret -n kubernetes-dashboard


2、获取token信息:

kubectl describe secret $(kubectl get secret -n kubernetes-dashboard|grep kubernetes-dashboard-token*|awk '{print $1}') -n kubernetes-dashboard|egrep  -w token:

查看token信息如下圈住信息:

3、将token信息复制到浏览器下面即可管理K8S集群了


http://www.niftyadmin.cn/n/5381669.html

相关文章

Qt使用单例模式读取xml文件

Qt使用单例模式读取xml文件 一、单例模式介绍1、什么是单例模式2、为什么使用单例模式3、什么情况下使用单例模式4、使用单例模式需要注意哪些问题线程安全 5、单例模式的类型6、单例类的特点 2、单例模式的实现2.1懒汉式2.2饿汉式 一、单例模式介绍 1、什么是单例模式 单例模…

【读点论文】Open-Set Text Recognition via Character-Context Decoupling

Open-Set Text Recognition via Character-Context Decoupling Abstract 开放集文本识别任务是一个新兴的挑战&#xff0c;在评估过程中需要额外的识别新字符的能力。我们认为&#xff0c;当前方法性能有限的一个主要原因是上下文信息对单个字符视觉信息的混淆效应。在开放集…

基于Java+SpringBoot+vue+elementui 实现即时通讯管理系统

目录 系统简介效果图源码结构试用地址源码下载地址技术交流 博主介绍&#xff1a; 计算机科班人&#xff0c;全栈工程师&#xff0c;掌握C、C#、Java、Python、Android等主流编程语言&#xff0c;同时也熟练掌握mysql、oracle、sqlserver等主流数据库&#xff0c;能够为大家提供…

基于Java SSM框架实现网上报名系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现网上报名系统演示 摘要 随着互联网时代的到来&#xff0c;同时计算机网络技术高速发展&#xff0c;网络管理运用也变得越来越广泛。因此&#xff0c;建立一个B/S结构的网上报名系统&#xff0c;会使网上报名系统工作系统化、规范化&#xff0c;也会提高网…

git相关内容

一.git安装 该操作相信不用介绍了&#xff0c;为什么用yum&#xff0c;大家也是非常清楚的。 如果是root账户&#xff1a;yum -y install git 如果是普通账户&#xff1a; sudo yum -y install git 二.git和gitee/github区别 Git&#xff08;读音为/gɪt/&#xff09;是一个…

力扣题目训练(15)

2024年2月8日力扣题目训练 2024年2月8日力扣题目训练507. 完美数520. 检测大写字母521. 最长特殊序列 Ⅰ221. 最大正方形237. 删除链表中的节点115. 不同的子序列 2024年2月8日力扣题目训练 2024年2月8日第十五天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括…

第13章 网络 Page818 UDP(和TCP的比较)

TCP核心类 asio::ip::tcp::socket;//网络套接字 asio::ip::tcp::endpoint;//边接端地址 asio::ip::tcp::resolver;//地址解析器 asio::ip::tcp::acceptor;//连接接受器 UPD核心类 asio::ip::udp::socket;//网络套接字 asio::ip::udp::endpoint;//边接端地址 asio::ip::udp::…

Django后端开发——模型层及ORM介绍

文章目录 参考资料Django配置MySQL安装mysqlclient创建数据库进入数据库的操作可能遇到的问题及解决方案Pycharm配置settings.py 模型![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c83753397bf6481d8defde26537903bf.png)ORM介绍示例终端&#xff1a;settings.py…