k3s基本操作

目录

准备

术语说明

在线安装

离线安装

常用命令

Helm 

安装helm

增加国内镜像仓库源、查看仓库列表、在仓库搜索chart

创建release 

自定义chart配置文件

etcd命令

 


准备

虚拟机192.168.255.130 安装k3s server,192.168.255.131安装k3s agent

修改/etc/hostname 和  /etc/hosts,让主机名不一样

术语说明

  • kubeconfig:用于配置集群访问的文件称为 kubeconfig 文件。 这是引用到配置文件的通用方法,并不意味着有一个名为 kubeconfig 的文件。 kubectl 命令行工具使用 kubeconfig 文件来查找选择集群所需的信息,并与集群的 API 服务器进行通信。默认情况下,kubectl 在 $HOME/.kube 目录下查找名为 config 的文件。 你可以通过设置 KUBECONFIG 环境变量或者设置 --kubeconfig参数来指定其他 kubeconfig 文件

在线安装

192.168.255.130安装server

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

运行此安装后:

  • K3s 服务将被配置为在节点重启后或进程崩溃或被杀死时自动重启。
  • 将安装其他实用程序,包括 kubectlcrictlctrk3s-killall.sh 和 k3s-uninstall.sh
  • kubeconfig 文件将写入到 /etc/rancher/k3s/k3s.yaml,由 K3s 安装的 kubectl 将自动使用该文件。

配置主节点 kubeconfig文件,配置到 .kube目录, 配置环境变量,默认寻找这个目录

mkdir -p /root/.kube/
cat /etc/rancher/k3s/k3s.yaml > /root/.kube/config
export KUBECONFIG=/root/.kube/config

设置随机启动

systemctl daemon-reload
systemctl enable k3s

启动服务 

systemctl start k3s-agent   systemctl status k3s-agent

192.168.255.131安装agent

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn NOBEST=true  K3S_URL=https://192.168.255.130:6443 K3S_TOKEN=K10348463da1678047813219f0e5b75073aee773b6d70253701e4e11a6786bc43c4::server:08518e5883666d472f598e7cb586e9a5 sh -

K3S_URL 参数会导致安装程序将 K3s 配置为 Agent 而不是 Server。K3s Agent 将注册到在 URL 上监听的 K3s Server。K3S_TOKEN 使用的值存储在 Server 节点上的 /var/lib/rancher/k3s/server/node-token 中。

配置agent节点的kubeconfig文件,从主节点复制文件,修改server项

scp 172.21.75.72:/etc/rancher/k3s/k3s.yaml /etc/rancher/k3s/  (修改为主节点IP)
vi /etc/rancher/k3s/k3s.yaml (修改Server项为主节点IP)

 server: https://192.168.255.130:6443

kubeconfig文件,配置到 .kube目录,默认寻找这个目录


mkdir -p /root/.kube/
cat /etc/rancher/k3s/k3s.yaml > /root/.kube/config
export KUBECONFIG=/root/.kube/config

设置随机启动

systemctl daemon-reload
systemctl enable k3s-agent

启动服务

systemctl start k3s-agent
systemctl status k3s-agent

离线安装

下载安装脚本后执行

wget https://rancher-mirror.rancher.cn/k3s/k3s-install.sh

 安装

INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://192.168.255.130:6443 K3S_TOKEN=K10348463da1678047813219f0e5b75073aee773b6d70253701e4e11a6786bc43c4::server:08518e5883666d472f598e7cb586e9a5 ./k3s-install.sh

安装提示缺少container-selinux,找对应版本下载

container-selinux-2.195.1-1.module_el8.8.0+1254+78119b6e.noarch.rpm CentOS 8 Stream Download (pkgs.org)

常用命令

查看k3s server状态

systemctl status k3s

查看k3s agent状态

systemctl status k3s-agent

 重启,启动,停止,systemctl restart\start\stop

查看pod

kubectl get pods -n namespace

进入pod

kubectl exec -it rdba-3-gxk-0-0-11113366-6496f5d8d9-6jr5z -n namespace /bin/sh

退出pod

exit

看pod信息,看service信息类似 

 kubectl describe pod rdba-3-gxk-0-0-11113366-6496f5d8d9-6jr5z -n namespace

Helm 

Helm使用的包格式称为 chart。 chart就是一个描述Kubernetes相关资源的文件集合,比如通过安装一个redis的chart,就安装了redis所需要的pod、service等等。

安装helm

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

增加国内镜像仓库源、查看仓库列表、在仓库搜索chart

helm repo add azure http://mirror.azure.cn/kubernetes/charts
helm repo list
helm search repo redis

helm如果报错找不到kubernates,配置kubeconfig

export KUBECONFIG=/root/.kube/config

创建release 

  • helm show chart azure/redis:查看redis chart详情
  • helm show values azure/redis:查看redis values(values:相当于chart的配置文件)
  • helm install redis-test azure/redis :安装chart 生成一个release,redis-test是release名字,azure/redis是包名chart名。helm依次安装service、pod等资源
  • helm status redis-test :查看release状态,Helm 客户端不会等到所有资源都运行才退出。许多 charts 需要大小超过 600M 的 Docker 镜像,可能需要很长时间才能安装到集群中。
  • helm list:查看release列表

install过程有提示信息,或者helm status redis-test能看到提示,如何连接创建的redis

k3s基本操作_第1张图片

kubectl get svc能看到install创建出来的redis master和slave

k3s基本操作_第2张图片

 按照提示得到redis密码,能连接master的clusterip

卸载release

helm uninstall redis-test

自定义chart配置文件

建立单master的配置文件,名为only-master.values。把redis设置为单例、设置了密码admin

## Cluster settings   
cluster:     
  enabled: false

## Redis pod Security Context   
securityContext:     
  enabled: false

## Use password authentication   
usePassword: true   

## Redis password (both master and slave)   
password: "admin"

## Redis Master parameters   
master:     
  persistence:       
    enabled: false 

然后--dry-run一下,看看生成出来的yaml文件是否存在问题:

helm install redis-demo stable/redis -f ./only-master.values --dry-run

如果没有问题,则进行实际的安装

helm install redis-demo stable/redis -f ./only-master.values

安装后redis密码变成admin,单例。

不卸载release,升级为redis集群,建立master-slave配置文件,名为master-slave.values

## Cluster settings   
cluster:     
  enabled: true     
  slaveCount: 1

securityContext:     
  enabled: false

## Use password authentication   
usePassword: true   
password: "admin"

## Mount secrets as files instead of environment variables   
usePasswordFile: false

## Redis Master parameters   
master:     
  persistence:       
    enabled: false

## Redis Slave properties   
slave:     
  persistence:       
  enabled: false

--dry-run一下,看看生成出来的yaml文件是否存在问题;由于在系统中已经有redis-demo的release,因此使用upgrade来进行升级:

helm upgrade redis-demo stable/redis -f ./master-slave.values --dry-run   helm upgrade redis-demo stable/redis -f ./master-slave.values

检查slave是否安装成功,以及是否同步成功

redis-cli -h `kubectl get svc redis-demo-slave -o=jsonpath="{.spec.clusterIP}"` -a admin   
get name
  • 最后,回滚至单master模式
  • 查看部署历史:helm history redis-demo
  • 回滚到对应的单master版本:helm rollback redis-demo REVISION
  • 再连接slave已经不成功了:
redis-cli -h `kubectl get svc redis-demo-slave -o=jsonpath="{.spec.clusterIP}"` -a admin
  • 只有master能连接:
redis-cli -hkubectl get svc redis-demo-master -o=jsonpath="{.spec.clusterIP}"` -a admin
# 输入命令测试一下
get age

etcd命令

etcdctl --write-out=table --endpoints http://172.21.75.156:2379 member list

etcdctl endpoint status --cluster --write-out=table

 

你可能感兴趣的:(K8S,linux,运维,服务器,k3s)