一、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