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

概述

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

参考文章:

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集群了

相关推荐
chuanauc4 小时前
Kubernets K8s 学习
java·学习·kubernetes
小张是铁粉5 小时前
docker学习二天之镜像操作与容器操作
学习·docker·容器
烟雨书信5 小时前
Docker文件操作、数据卷、挂载
运维·docker·容器
IT成长日记5 小时前
【Docker基础】Docker数据卷管理:docker volume prune及其参数详解
运维·docker·容器·volume·prune
这儿有一堆花5 小时前
Docker编译环境搭建与开发实战指南
运维·docker·容器
LuckyLay5 小时前
Compose 高级用法详解——AI教你学Docker
运维·docker·容器
Uluoyu5 小时前
redisSearch docker安装
运维·redis·docker·容器
IT成长日记9 小时前
【Docker基础】Docker数据持久化与卷(Volume)介绍
运维·docker·容器·数据持久化·volume·
疯子的模样14 小时前
Docker 安装 Neo4j 保姆级教程
docker·容器·neo4j
虚伪的空想家14 小时前
rook-ceph配置dashboard代理无法访问
ceph·云原生·k8s·存储·rook