首页 > 其他分享 >Kubenetes集群部署操作

Kubenetes集群部署操作

时间:2024-07-31 10:28:10浏览次数:17  
标签:kubectl kubernetes 部署 #### yaml 集群 Kubenetes docker dashboard

服务器 操作系统:CentOS 7.9 NAT

  • 192.168.1.156 4核 20G master

  • 192.168.1.110 1核 8G node01

  • 192.168.1.111 1核 8G node02

  • 192.168.1.112 1核 8G node03

环境准备

  1. 关闭防火墙

####关闭防火墙
systemctl stop firewalld && systemctl disable firewalld && iptables -F
  1. 关闭selinux

####关闭selinux   
sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0

注: selinux:安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux是一种采用安全架构的Linux系统,由美国国家安全局(NSA)利用Linux安全模块(LSM)开发而成。它的作用是审核每一个程序的行为,有任何异常之处它都会立即警告用户,从而避免我们被恶意软件、木马、黑客等侵害。SELinux的工作原理类似防火墙,就是设置一系列的规则,这些规则可以精细到每个软件。

  1. 关闭swap分区

####临时关闭
swapoff -a
####永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab
  1. 修改主机以及各个节点的hosts文件(/etc/hosts)

####设置主机名
[root@master]hostnamectl set-hostname master
[root@node01]hostnamectl set-hostname node01
[root@node02]hostnamectl set-hostname node02
[root@node03]hostnamectl set-hostname node03
####hosts文件
192.168.1.156 master master
192.168.1.110 node01 node1
192.168.1.111 node02 node2
192.168.1.112 node03 node3
  1. 修改内核参数

####添加K8S内核参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
​
####查看参数
sysctl --system
  1. 加载ip_vs内核模块

modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4
####设置开机自启
cat > /etc/modules-load.d/ip_vs.conf << EOF 
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF

安装docker

        1.具体过程不赘述,没什么难点,可以参考脚本 

echo "#判断是否安装docker" 
if [ -z "$(which docker)" ]; then
    echo "===========================安装docker==========================="
    echo "#安装docker "
    echo "# 解压installData文件夹下的tgz文件"
    tar -zxvf $BASEDIR/installData/docker-20.10.15.tgz  -C $BASEDIR/installData/
    cp  $BASEDIR/installData/docker/* /usr/bin/ 
    echo "# 复制docker.service 文件到 "
    cp  $BASEDIR/conf/docker/docker.service   /etc/systemd/system/
    mkdir /etc/docker/ 
    cp  $BASEDIR/conf/docker/daemon.json /etc/docker/
    chmod +x /etc/systemd/system/docker.service      #添加文件权限并启动docker
    chmod +x /etc/docker/daemon.json
    systemctl daemon-reload        #重载unit配置文件
    systemctl start docker         #启动Docker
    systemctl enable docker.service    #设置开机自启
fi

安装Kubeadm、Kubectl、Kubelet

  1. 配置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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
  1. 安装Kubeadm、Kubectl、Kubelet

####安装kube
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
####设置开机自启
systemctl enable kubelet

部署Master节点

  1. master节点初始化

kubeadm init \
  --kubernetes-version 1.23.0 \  ####指定版本
  --apiserver-advertise-address=192.168.1.156 \   ####通告给其他组件的ip,一般为master节点的ip
  --service-cidr=10.96.0.0/16 \   ####指定service网络,不能和node网络冲突
  --pod-network-cidr=10.245.0.0/16 \    ####指定pod网络,不能和node网络,service网络冲突
  --image-repository registry.aliyuncs.com/google_containers    #####指定镜像源

img

  1. 配置kubectl

####执行初始化成功后输出的三条命令
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
  1. 查看节点信息,等待节点加入

kubectl get nodes

node节点加入集群

  1. node01节点加入集群

kubeadm join 192.168.68.106:6443 --token 1quyaw.xa7yel3xla129kfw \
    --discovery-token-ca-cert-hash sha256:470410e1180b119ebe8ee3ae2842e7a4a852e590896306ec0dab26b168d99197
  1. node02节点同上

  2. master节点上查看集群节点

kubectl get nodes

STATUS为NotReady,是因为集群中缺少第三方网络插件所导致,常见网络插件有两种flannel与calico,通过wget命令下载yaml文件

安装网络插件

  1. 从官网下载flannel的yaml文件

######flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#####calico
wget https://docs.projectcalico.org/manifests/calico.yaml

flannel

更改文件128行网络配置,和 pod-network-cidr保持一致

####执行yaml文件
kubectl apply -f kube-flannel.yaml

查看未启动插件日志,缺少那个镜像手动拉取至各个节点

####查看日志
kubectl describe pod <pod-name> -n <namespace>

手动拉取镜像网站渡渡鸟镜像同步站 (aityp.com)

Calico

删除Flannel

kubectl delete -f kube-flannel.yaml 

ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
mv /var/lib/cni /var/lib/cni.bak
mv /etc/cni/net.d /etc/cni/net.d.bak

####清除网络重启kube
rm -rf /var/lib/cni/
rm -f /etc/cni/net.d/*
systemctl restart kubelet

####执行calico.yaml文件
kubectl apply -f calico.yaml

查看未启动插件日志,缺少那个镜像手动拉取至各个节点

kubectl describe pod <pod-name> -n <namespace>

kubernetes dashboard部署

下载yaml文件并安装

####下载dashboard的recommended.yaml文件
wget  https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
####编辑recommended.yaml
vim recommended.yaml
####在端口添加
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30443    ####添加
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort   ###添加
#### 然后k8s的主节点当中去执行:
kubectl apply -f recommended.yaml
#### 监控仪表盘是否安装完成
watch kubectl get all -o wide -n kubernetes-dashboard
#### 访问 Dashboard 用户界面
#### 查看 kubernetes-dashboard Service暴露的端口:
kubectl get svc -n kubernetes-dashboard -o wide

浏览器访问dashboard

在浏览器访问:https://192.168.1.156:30443/

创建用户admin-user.yaml

admin-user.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin    # 默认内置的 ClusterRole, 超级用户(Super-User)角色(cluster-admin)
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

创建用户

kubectl apply -f admin-user.yml 

创建临时token

kubectl -n kubernetes-dashboard create token admin-user

kubernetes-dashboard 实现https切换http访问以及免token登录

  1. 在recommended.yaml增加80端口,

####在端口添加
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30443    
      name: https   ####添加
    - port: 80      ####添加
      targetPort: 9090   ####添加
      name: http    ####添加
      nodePort: 32001    ####添加
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort   
  1. 修改clusterrolebinding

####默认绑定kubernetes-dashboard权限太少,这里换成比较高的cluster-admin
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin   #### 主要修改了这里
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
  1. 修改deployment 内容 修改探针检测

####后面要修改dashboard 的启动参数,这里不改的话,活性检测会失败,导致 pod 会不断重启
livenessProbe:
  httpGet:
    scheme: HTTP
    path: /
    port: 9090     ####修改
  1. 修改拉取镜像策略

####官方 yaml 里面默认配置的是 Always
sed -i 's/imagePullPolicy: Always/imagePullPolicy: IfNotPresent/g' recommended.yaml
  1. 修改容器端口

####增加9090端口
ports:
  - containerPort: 8443
    protocol: TCP
  - containerPort: 9090   ####添加
    protocol: TCP    ####添加
  1. 关闭token登录

####注释--auto-generate-certificates 参数
args:
  # - --auto-generate-certificates
  - --namespace=kubernetes-dashboard
  # Uncomment the following line to manually specify Kubernetes API server Host
  # If not specified, Dashboard will attempt to auto discover the API server and connect
  # to it. Uncomment only if the default does not work.
  # - --apiserver-host=http://my-address:port

kuboard安装

在各个节点拉取镜像 eipwork/kuboard:latest

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/eipwork/kuboard:v3.5.2.7
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/eipwork/kuboard:v3.5.2.7 eipwork/kuboard:latest

在master节点上kuboard.yaml修改

spec:
  nodeName: node01     ####添加
  nodeName: node02     ####添加
  nodeName: node03     ####添加
  containers:
    - name: kuboard
      image: eipwork/kuboard:latest
      imagePullPolicy: IfNotPresent
   tolerations:
    - key: node-role.kubernetes.io/master
      effect: NoSchedule
####执行yaml
kubectl apply -f kuboard.yaml
####查看pod运行情况
kubectl get pod -n kube-system
####查看kubernetes的运行端口
kubectl get svc -n kube-system

初始Kuboard账号密码登录

admin
Kuboard123

获取导入集群token

echo -e "\033[31m$(kubectl -n kuboard get secret $(kubectl -n kuboard get secret kuboard-admin-token | grep kuboard-admin-token | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)\033[0m"

安装metrics-server对集群状态进行监控

手动拉取所需镜像

#####拉取metrics-server至各个节点
docker pull swr.cn-east-2.myhuaweicloud.com/kuboard-dependency/metrics-server:v0.6.2
####检查集群状态
kubectl get pod <pod-name> -n <namespace>

将镜像部署至K8S集群

  1. 创建命名空间

kubectl create namespace 

标签:kubectl,kubernetes,部署,####,yaml,集群,Kubenetes,docker,dashboard
From: https://blog.csdn.net/qq_53567504/article/details/140814207

相关文章

  • docker换国内镜像源-Docker安装 Nginx测试-Docker部署Gitblit服务器
    docker换国内镜像源,docker换源echo>/etc/docker/daemon.jsoncat>/etc/docker/daemon.json<<END{  "registry-mirrors":[    "https://hub-mirror.c.163.com",    "https://ustc-edu-cn.mirror.aliyuncs.com",    "https:/......
  • HDFS集群
    一、上传hadoop安装包到hdp-01集群任一节点(master) tar-zxvf软件包-C指定安装文件夹二、修改配置文件1.指定Hadoop的默认文件系统为hdfs2.指定hdfs的namenode节点为哪台机器3.指定namenode软件存储元数据的本地目录4.指定datanode软件存放文件块的本地目录三、进入......
  • LLAMA3.1 8B 本地部署并配合Obsidian建立本地AI知识管理系统
    目前,LLAMA3.1模型分为8B、70B、405B三个版本,其中70B和405B对于显存的要求均已超过了一般家用电脑的配置(或者换个说法,用一张4090也是带不起来的),所以运行8B即可。LLAMA3.18B的性能约相当于ChatGPT3.5。经过我的测试4080、2080、intelultra9185H(无独立显卡,其能力约相当于1060)......
  • Nginx部署前端环境(Mac)
    Nginx部署前端环境(Mac)常用命令#启动nginxsudonginx#检查nginx是否已经启动成功ps-ef|grepnginx#如果显示有以下内容,说明启动成功nginx:masterprocessnginx:workerprocess#查看端口号占用lsof-i:端口号#如果什么都没显示,说明端口没有被占用#查看nginx.......
  • DX4600部署immich相册
    DX4600部署immich相册步骤开启DX4600远程调试功能下载docekr-compose下载immich部署文件修改部署文件配置部署部署完配置1.开启远程调试这个步骤很简单,如下图,下面的验证码就是ssh密码,通过ssh工具连接登录绿联nas,用户root,端口9222.下载Docker-compose已经下载过且......
  • Docker-harbor私有仓库部署
    目录什么是Harbor?Harbor的介绍Harbor的特性Harbor的构成Harbor部署实验一、部署Docker-Compose服务二、部署Harbor服务(一)在/opt上传harbor压缩包(二)修改harbor安装的配置文件(三)启动Harbor三、查看Harbor启动镜像四、登录验证什么是Harbor?Harbor的介绍Harbor是......
  • 基于SpringBoot+Vue的电影院订票信息管理系统的详细设计和实现(源码+lw+部署文档+讲解
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于SpringBoot+Vue的甘肃旅游管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • DM-DSC集群配置
    DM-DSC集群配置 DMDSC概述DM共享存储数据库集群全称DMDataSharedCluster,简称DMDSCDMDSC特性DM共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某一个数据库实例故障后......
  • 达梦数据库dm8版本Mpp集群原理系统架构和搭建测试
    达梦数据库dm8版本Mpp集群原理系统架构和搭建测试    当前主流的数据库系统架构有完全共享、共享存储、完全不共享和完全对等不共享几种。其中完全共享体系如SMP服务器,局限于单节点服务器,通常价格比较昂贵,其扩展性和性能受到相应的限制。共享存储体系允许系统......