本文介绍
k3s的离线方式安装,用于快速部署集群,版本号v1.21.5+k3s2一、基本环境准备
#禁用**iptables**和**firewalld**服务
#关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
#关闭iptables服务
systemctl stop iptables
systemctl disable iptables
# 关闭 swap
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
#禁用**selinux**
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 生效命令
sysctl --system
二、docker环境准备
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
#安装指定版本
yum install docker-ce-20.10.7
# 添加阿里云 yum 源, 可从阿里云容器镜像管理中复制镜像加速地址
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
#启动docker
systemctl enable docker && systemctl start docker
k3s源文件准备
- 查看系统版本,我的是64位的,地址github.com/k3s-io/k3s/…
[root@localhost ~]# uname -a
Linux k3s-master 3.10.0-1160.42.2.el7.x86_64 #1 SMP Tue Sep 7 14:49:57 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
k3s安装
- 复制文件到
k3s二进制文件到/usr/local/bin - 在
/usr/local/bin下载安装脚本wget https://get.k3s.io -O k3s-install.sh - 赋予执行权限
[root@localhost bin]# pwd
/usr/local/bin
[root@localhost bin]# ls
k3s k3s-install.sh
[root@localhost bin]# chmod -R 755 *
-
docker镜像导入docker load -i k3s-airgap-images-amd64.tar.gz -
master节点开始安装
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_VERSION="v1.21.5+k3s2" INSTALL_K3S_EXEC="server --docker --node-name k3s-master --tls-san 192.168.137.200 --node-ip 192.168.137.200 --node-external-ip 192.168.137.200" ./k3s-install.sh
kubectl命令使用配置
#编辑/etc/profile文件添加如下内容
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
#让配置生效
source /etc/profile
#接下来就可以愉快使用kubectl命令啦
安装成功显示如下
[root@localhost bin]# kubectl get node
NAME STATUS ROLES AGE VERSION
k3s-master Ready control-plane,master 109s v1.21.5+k3s2
node节点开始安装
注意:子节点安装也需要执行镜像和那些安装脚本步骤
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC="--docker --node-name k3s-node01 --node-ip 192.168.137.140 --node-external-ip 192.168.137.140" K3S_URL=https://192.168.137.200:6443 K3S_TOKEN=K103b3c4ba43ed57c42164e7b014e2cf74df3c6ad1f0fadf12abab68bccf27d84d0::server:c4645ae3fd4995a18aa781928b54b14c ./k3s-install.sh
- 安装成功后
案例
该案例以
nginx为模板,使用traefik访问
- 创建
k8s-nginx.yaml
apiVersion: v1
kind: Namespace
metadata:
name: k8s-nginx
---
apiVersion: v1
kind: Service
metadata:
name: k8s-nginx-demo-service
namespace: k8s-nginx
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: k8s-nginx-demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-nginx-demo
namespace: k8s-nginx
spec:
selector:
matchLabels:
app: k8s-nginx-demo
replicas: 1
template:
metadata:
labels:
app: k8s-nginx-demo
spec:
containers:
- name: k8s-nginx-demo
image: nginx:latest
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
timeoutSeconds: 1
- 创建
k8s-nginx-traefik.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: k8s-springboot-demo-ingress
namespace: k8s-springboot
spec:
entryPoints:
- web
routes:
- match: PathPrefix(`/a`)
kind: Rule
services:
- name: k8s-springboot-demo-service
port: 80
middlewares:
- name: a-stripprefix
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: a-stripprefix
namespace: k8s-springboot
spec:
stripPrefix:
prefixes:
- /a
- 部署该应用
kubectl apply -f k8s-nginx.yaml
kubectl apply -f k8s-nginx-traefik.yaml
其他常用命令
节点标签管理
- 增加
worker节点标签
kubectl label nodes k3s-node01 node-role.kubernetes.io/worker=worker
- 删除
worker节点标签
kubectl label nodes k3s-node01 node-role.kubernetes.io/worker-
- 设置节点不可调度
k3s kubectl cordon k3s-node01
- 取消不可调度
k3s kubectl uncordon k3s-node01
- 驱逐已经运行的业务容器
k3s kubectl drain --ignore-daemonsets --delete-local-data k3s-node01
- 删除node 节点
k3s kubectl delete node k3s-node01