k8s安装详解

一、k8s安装要求

在进行k8s安装前,需要确保满足以下硬件要求:

1、至少3台物理机器或虚拟机;

2、每台机器至少拥有2核CPU,4GB内存,20 GB硬盘空间;

3、所有机器之间需要互通,可利用SSH互相登录,并确保防火墙允许k8s所需端口的通信。

另外,推荐选择OS为Ubuntu 18.04或CentOS 7的机器。

二、k8s安装grafana

Grafana是一款开源的指标监控系统,常用于k8s的监控。下面是grafana在k8s中的安装过程:

1、首先需要在k8s中启动一个grafana实例,可以使用以下命令:

kubectl apply -f https://raw.githubusercontent.com/grafana/helm-charts/main/charts/grafana/values.yaml
kubectl apply -f https://raw.githubusercontent.com/grafana/helm-charts/main/charts/grafana/templates/deployment.yaml

2、等待grafana实例启动后,可以通过NodePort或LoadBalancer的方式对外暴露服务,比如以下例子使用NodePort方式:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana-service
spec:
  selector:
    app: grafana
  ports:
  - name: http
    nodePort: 30800
    port: 80
    protocol: TCP
    targetPort: http
  type: NodePort

3、访问grafana的NodePort地址,即可开始配置grafana的数据源和监控面板。

三、k8s安装mysql

Mysql是一款流行的开源关系型数据库,常常用于k8s应用的存储。下面是在k8s中安装mysql的过程:

1、首先需要在k8s中启动mysql实例,可以执行以下命令:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: mysql
  name: mysql-db
spec:
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    app: mysql
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql	
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - env:
        - name: MYSQL_ROOT_PASSWORD
          value: mysql_password
        - name: MYSQL_USER
          value: mysql_user
        - name: MYSQL_PASSWORD
          value: mysql_password
        name: mysql
        image: mysql:5.7
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-persistent-storage
       volumes:
       - name: mysql-persistent-storage
         persistentVolumeClaim:
           claimName: mysql-pvc

2、等待mysql实例启动后,可以通过client连接到mysql,使用以下命令:

kubectl run -it --rm --image=mysql:5.7 --restart=Never mysql-client -- mysql -h mysql-db -p

3、连接到mysql后,即可执行相关的SQL语句,进行数据库的管理和操作。

四、k8s安装ingress

Ingress是一个k8s内置的服务,可以实现对外暴露服务的功能。下面是在k8s中安装Ingress的过程:

1、首先需要在k8s中启用Ingress服务,可以执行以下命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/cloud/deploy.yaml

2、等待Ingress服务启动后,需要定义Ingress规则,比如以下例子:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
spec:
  rules:
  - host: test.example.com
    http:
      paths:
      - path: /hello
        pathType: Prefix
        backend:
          service:
            name: hello-world
            port:
              name: http

3、根据Ingress规则,可以通过外部域名或IP访问k8s中的服务。

五、k8S安装Saleor

Saleor是一个流行的开源电商平台,可以在k8s中进行安装和部署。下面是在k8s中安装Saleor的过程:

1、首先需要在k8s中启用PostgreSQL数据库实例和Redis缓存实例,可以使用以下命令:

kubectl apply -f https://gist.githubusercontent.com/maurodelazeri/5cf84ba75a54f9596d62c4b2f19de573/raw/bd5f29c6d61b1145f66eb973952150f5b5ad6e55/postgresql.yaml
kubectl apply -f https://gist.githubusercontent.com/maurodelazeri/5cf84ba75a54f9596d62c4b2f19de573/raw/bd5f29c6d61b1145f66eb973952150f5b5ad6e55/redis.yaml

2、等待PostgreSQL和Redis实例启动后,需要设置相应的环境变量和配置文件,例如以下Saleor部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: saleor-example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: saleor
  template:
    metadata:
      labels:
        app: saleor
    spec:
      containers:
      - env:
        - name: ALLOWED_HOSTS
          value: '["example.com", "www.example.com"]'
        - name: DEBUG
          value: 'false'
        - name: DATABASE_URL
          value: 'postgres://saleor:password@postgres:5432/saleor'
        - name: REDIS_URL
          value: 'redis://redis:6379/1'
        - name: SECRET_KEY
          value: 'supersecretkey'
        - name: DEFAULT_CURRENCY
          value: 'USD'
        - name: DEFAULT_EMAIL_FROM
          value: 'no-reply@example.com'
        image: saleor/saleor:latest
        name: saleor
        ports:
        - containerPort: 80
          name: http
        volumeMounts:
        - mountPath: /home/node/saleor
          name: saleor-data
      volumes:
      - name: saleor-data
        persistentVolumeClaim:
          claimName: saleor-pvc

3、Saleor应用程序将自动加载,可以使用外部域名或IP访问。

六、k8s安装方式对比

对于k8s的安装,有多种方案可供选择,以下是几种常见的安装方式:

1、手动安装

使用手动方式,可以深入了解k8s的安装过程和原理,但需要耗费大量的时间和精力。

2、使用包管理器安装

可以使用包管理器,比如官方推荐的kubeadm,快速地完成k8s的安装。

3、使用自动化工具安装

k8s的生态系统非常强大,有许多自动化工具可供选择,比如Helm、RKE等,可以快速地完成k8s的安装和管理。

七、k8S安装教程

下面是一个kubeadm方式安装k8s集群的示例:

1、首先确保机器满足k8s的要求,执行以下命令来安装kubeadm、kubelet和kubectl:

apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat < /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl

2、使用kubeadm初始化集群:

kubeadm init --pod-network-cidr=10.244.0.0/16

3、等待k8s集群初始化完成后,使用以下命令将kubernetes配置复制到普通用户的目录中:

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

4、配置网络插件,比如使用flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

5、启用worker节点,可以通过以下命令获取加入节点的token和hash:

kubeadm token list | awk 'END{print $1}'
kubeadm token create TOKEN --print-join-command

6、在要加入集群的worker节点上执行上面获取到的join命令即可。

八、rke安装k8s

下面是一个使用RKE安装k8s集群的示例:

1、首先需要在所有节点上安装rke二进制文件:

curl -L https://github.com/rancher/rke/releases/download/v0.3.2/rke_linux-amd64 -o /usr/local/bin/rke
chmod +x /usr/local/bin/rke

2、定义集群配置,比如以下yaml:

nodes:
  - address: node1.example.com
    user: ubuntu
    role: controlplane,etcd
  - address: node2.example.com
    user: ubuntu
    role: worker
  - address: node3.example.com
    user: ubuntu
    role: worker
services:
  etcd:
    snapshot: true
    creation: 6h
    retention: 24h
    backup_config:
      interval_hours: 2
      S3:
        region: us-west-2
        bucket: rke-backups
        access_key: accesskey
        secret_key: secretkey
        endpoint: https://s3.us-west-2.amazonaws.com
        folder: backup-timestamp
  kube-controller:
    cluster_cidr: 10.0.0.0/16
    service_cluster_ip_range: 10.43.0.0/16
  kubelet:
    fail_swap_on: false
  kubeproxy:
    mode: ipvs
addons:
  als:
    enable: true

3、使用rke创建k8s集群:

rke up

4、等待k8s集群创建完成后,可以使用kubectl等工具来管理集群。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/236326.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-12 11:59
下一篇 2024-12-12 11:59

相关推荐

  • 如何解决Docker+k8s报错413 Request Entity Too Large

    对于使用Docker容器和Kubernetes集群的开发人员,在处理HTTP请求时,常常会遇到413 Request Entity Too Large的报错。这通常是由于请求的大小…

    编程 2025-04-27
  • k8s节点设置cpu高于多少就不调度

    本文将从以下几个方面详细阐述k8s节点设置cpu高于多少就不调度的相关内容: 一、k8s节点设置的概念和原理 k8s是Google开源的容器集群管理系统,用于自动化部署、扩展和管理…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25

发表回复

登录后才能评论