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/zh-tw/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

發表回復

登錄後才能評論