sealos安装k8s-ubuntu22.04.04
~~前提:
1、master和node之间root SSH能登录。
2.时间要同步
第一步:在客户端产生密钥地 ssh-keygen -t ed25519
ssh-keygen -t rsa
第二步:将公钥部署到远程服务器 ssh-copy-id root@192.168.198.112
第三步:从普通用户复制到root目录下
root@clusterb-node1:~# cp /home/oracle/.ssh/authorized_keys /root/.ssh/authorized_keys
第四步:在远程服务器(服务端)确认SSH服务配置,确保文件中包含 PubkeyAuthentication yes 和 AuthorizedKeysFile .ssh/authorized_keys 这两行(行首没有#注释)
sudo sed -i 's/^#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sudo sed -i 's/^#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config
1.1环境配置:
1. 虚拟机集群搭建 设置主机名 [root@localhost ~]# hostnamectl set-hostname master [root@localhost ~]# hostnamectl set-hostname node1 [root@localhost ~]# hostnamectl set-hostname node2 域名写入host文件 cat >> /etc/hosts << EOF 192.168.198.111 cluster-master1 192.168.198.112 cluster-node1 192.168.198.113 cluster-node2 EOF 关闭swapoff [root@master ~]# swapoff -a [root@master ~]# sudo sed -ri 's/.*swap.*/#&/' /etc/fstab 修改内核参数 1、载入如下内核模块 sudo tee /etc/modules-load.d/containerd.conf <<EOF overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter 验证是否加载成功: lsmod | grep -E "overlay|br_netfilter" 2、配置内核网络参数 cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sudo sysctl --system
3、安装IPVS
root@clusterb-node1:/var/log# apt install ipvsadm
2、# 指定k8s部署目录位置
K8S_DIR="/app" # k8s服务相关目录 mkdir -p $K8S_DIR/k8s/{sealos,kubelet,containerd,containers,calico,etcd} ln -sf $K8S_DIR/k8s/sealos /var/lib/sealos ln -sf $K8S_DIR/k8s/kubelet /var/lib/kubelet ln -sf $K8S_DIR/k8s/containerd /var/lib/containerd ln -sf $K8S_DIR/k8s/containers /var/lib/containers ln -sf $K8S_DIR/k8s/calico /var/lib/calico ln -sf $K8S_DIR/k8s/etcd /var/lib/etcd # k8s日志相关目录 mkdir -p $K8S_DIR/k8s/logs/{pods,containers,kubernetes,calico} ln -sf $K8S_DIR/k8s/logs/pods /var/log/pods ln -sf $K8S_DIR/k8s/logs/containers /var/log/containers ln -sf $K8S_DIR/k8s/logs/kubernetes /var/log/kubernetes ln -sf $K8S_DIR/k8s/logs/calico /var/log/calico
~~sealos安装K8s
1、下载sealos
wget https://ghfast.top/https://github.com/labring/sealos/releases/download/v4.3.0/sealos_4.3.0_linux_amd64.tar.gz \ && tar zxvf sealos_4.3.0_linux_amd64.tar.gz && cp sealos /usr/bin/
2、下载k8s,calico镜像
# 下载k8s、calico、helm
sealos pull registry.cn-shanghai.aliyuncs.com/labring/helm:v3.8.2 sealos pull registry.cn-shanghai.aliyuncs.com/labring/calico:v3.22.1 sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.21.0
3、部署k8s集群
方式1:
(1) 生成集群部署文件
sealos gen registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.21.0 \ registry.cn-shanghai.aliyuncs.com/labring/calico:v3.22.1 \ --masters x.x.x.x,x.x.x.x \ --nodes x.x.x.x,x.x.x.x \ --passwd 'password'
--vip 1XX.XX.XX.XX
> Clusterfile (2) 修改Clusterfile文件,在status: {}行下面插入以下内容,完整内容如下:
root@master:/# more Clusterfile
apiVersion: apps.sealos.io/v1beta1
kind: Cluster
metadata:
creationTimestamp: null
name: default
spec:
hosts:
- ips:
- 192.168.198.131:22
roles:
- master
- amd64
image:
- labring/kubernetes:v1.21.0
- labring/calico:v3.22.1
ssh:
passwd: oracle
pk: /root/.ssh/id_rsa
port: 22
status: {}
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
networking:
podSubnet: 172.16.0.0/16
---
apiVersion: apps.sealos.io/v1beta1
kind: Config
metadata:
name: calico
spec:
path: manifests/calico.yaml
data: |
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
# Configures Calico networking.
calicoNetwork:
# Note: The ipPools section cannot be modified post-install.
ipPools:
- blockSize: 26
# Note: Must be the same as podCIDR
cidr: 172.16.0.0/16
encapsulation: IPIP
natOutgoing: Enabled
nodeSelector: all()
nodeAddressAutodetectionV4:
interface: "ens32"
(3) sealos apply -f /Clusterfile
方式2:
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.21.0 \ registry.cn-shanghai.aliyuncs.com/labring/calico:v3.22.1 \ --masters 192.168.198.131 \ --nodes 192.168.198.133,192.168.198.134 \ -p 'oracle'
4、安装失败-恢复环境
sealos reset
5、sealos常用命令
# 添加节点 sealos add --nodes 192.168.198.133,192.168.198.134 # 添加master和节点 sealos add --masters 192.168.198.131 --nodes 192.168.198.133 sealos add --masters x.x.x.x-x.x.x.x --nodes x.x.x.x-x.x.x.x # 删除节点 sealos delete --nodes x.x.x.x sealos delete --masters x.x.x.x --nodes x.x.x.x # 清理集群 sealos reset --help sealos reset sealos reset --masters x.x.x.x,x.x.x.x,x.x.x.x # 登陆到sealos镜像仓库 sealos login sealos.hub:5000 -u admin -p passw0rd # 导入镜像到本地 sealos load -i nginx_latest-1.28.0.tar # 镜像打tag sealos tag registry.images.net/nginx:1.28.0 sealos.hub:5000/nginx:1.28.0 # 镜像push到sealos仓库 sealos push sealos.hub:5000/nginx:1.28.0 # 查看镜像 sealos images # 导出镜像到本地 sealos save -o nginx:1.28.0.tar sealos.hub:5000/nginx:1.28.0 # 导出多个镜像到一个tar归档文件 sealos save -o images.tar --images="nginx:latest,redis:alpine"
6、kubectl常用命令
# 1. 查看所有节点的状态、角色、版本及内部 IP kubectl get nodes -o wide # 2. 查看所有命名空间下的 Pod,并显示所在的节点(便于排查 Pod 分布) kubectl get pods -A -o wide # 3. 查看集群核心组件(scheduler, controller-manager, etcd)的健康状态 kubectl get cs #验证组件是否正常 kubectl get pods -n kube-system | grep -E 'scheduler|controller-manager' # 4. 查看 kube-system 命名空间下关键 Pod 的详细状态(CoreDNS, kube-proxy 等) kubectl get pods -n kube-system # 5. 查看网络插件(calico-system 或其他)的 Pod 状态 kubectl get pods -n calico-system 2>/dev/null || kubectl get pods -n kube-flannel 2>/dev/null kubectl get pods -A -o wide # 6. 【可选】实时监视 Pod 状态变化(按 Ctrl+C 退出) kubectl get pods -A -w # 7 。验证组件是否正常 kubectl get pods -n kube-system | grep -E 'scheduler|controller-manager' # 8. kubectl label node 命令添加标签 kubectl label node node1 node-role.kubernetes.io/worker= kubectl label node node2 node-role.kubernetes.io/worker= kubectl logs -n calico-system calico-node-cx2fg --previous kubectl logs -n calico-system calico-node-cx2fg kukubectl delete pod POD_NAME --force --grace-period=0 kubectl describe pod -n calico-system calico-node-cx2fg
参考链接:
https://www.cnblogs.com/xwupiaomiao/p/17646237.html
https://sealos.run/docs/k8s/quick-start/deploy-kubernetes
浙公网安备 33010602011771号