一、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等工具来管理集群。