1. 在联网服务器拉取镜像并打包
- 访问Sealos源码下载二进制包,复制到联网服务器。
- 使用
tar xvf sealos_5.1.1_linux_amd64.tar.gz sealos解压,使用mv sealos /usr/local/bin/放到全局工具目录,使用sealos version验证生效。 - 访问Registry Explore网站查询镜像仓库中镜像的最新版本。
- 确定
registry.cn-shanghai.aliyuncs.com/labring/kubernetes、registry.cn-shanghai.aliyuncs.com/labring/helm、registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller和registry.cn-shanghai.aliyuncs.com/labring/cilium的版本。 - 使用如下命令拉取远程镜像到本地(使用
sealos images查看本地镜像):1
2
3sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.31.11 sealos pull registry.cn-shanghai.aliyuncs.com/labring/helm:3.19.2 sealos pull registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.19 - 使用如下命令将本地镜像打包(仅归档不压缩):
1
2
3sealos save -o kubernetes-v1.31.11.tar registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.31.11 sealos save -o helm-v1.19.2.tar registry.cn-shanghai.aliyuncs.com/labring/helm:v3.19.2 sealos save -o cilium-v1.14.19.tar registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.19 - 将镜像包复制到离线服务器(
master节点),所有离线服务器使用相同密码。
2. 在离线服务器装载镜像并安装
- 在离线服务器(
master节点)部署Sealos。 - 使用如下命令将镜像包装载为本地镜像(使用
sealos images查看本地镜像):1
2
3sealos load -i kubernetes-v1.31.11.tar sealos load -i helm-v1.19.2.tar sealos load -i cilium-v1.14.19.tar - 使用
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.31.11 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.19.2 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.14.19 --masters 10.10.10.20 --nodes 10.10.10.21,10.10.10.22 -p L+ah204313805安装Kubernetes。 - 安装完成后使用
kubectl get node -o wide查看节点状态,使用kubectl get pod -A -o wide查看容器组状态(如果coredns没启动,有可能是/etc/resolv.conf为空导致coredns获取不到上游DNS信息)。 - 使用
cat .kube/config获取集群信息(如果server后边的信息不对需要先修改),在图形化界面导入即可管理集群。
3. 安装IngressNginxController
- 访问ingress-nginx-4.14.3.tgz源码下载二进制包,复制到离线服务器。
- 将
docker.1ms.run/dyrnq/kube-webhook-certgen:v1.6.7和docker.1ms.run/dyrnq/ingress-nginx-controller:v1.14.3推送到Harbor仓库。 - 使用
tar -zxvf ingress-nginx-4.14.3.tgz解压,使用vi ingress-nginx/values.yaml把registry:后边换成10.10.10.12。 - 使用
helm install ingress-nginx ingress-nginx --namespace ingress-nginx --create-namespace安装ingress-nginx-controller。
4. 解决证书过期问题
使用kubeadm certs check-expiration命令查看证书过期时间,会发现super-admin.conf的有限期只有一年,到期后可以使用如下脚本自动续期:
vi /usr/local/bin/renew-k8s-certs.sh
1 | |
chmod +x /usr/local/bin/renew-k8s-certs.sh
crontab -e
1 | |
5. 创建容器组
- 创建命名空间
loonzh:kubectl create namespace loonzh - 启动Pod(离线服务器需要提前加载镜像包):
kubectl run nginx -n loonzh --image=docker.1ms.run/nginx:1.29.6 - 查看Pod信息(
IP字段是容器的集群地址,可以用来访问Nginx欢迎页):kubectl describe pod nginx -n lonnzh6. 创建部署(属于Workload)
kubectl apply -f nginx-deployment.yaml
``` apiVersion: apps/v1 kind: Deployment metadata: namespace: loonzh name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers:- name: nginx-container
image: docker.1ms.run/nginx:1.29.6
ports:
- containerPort: 80
1
2#### 7. 创建服务(NodePort模式) `kubectl apply -f nginx-service.yaml`apiVersion: v1 kind: Service metadata: namespace: loonzh name: nginx-service spec: selector: app: nginx ports:
- port: 80
targetPort: 80
nodePort: 30080
type: NodePort
1
2#### 8. 创建服务(ClusterIP模式和LoadBalancer模式) `kubectl apply -f nginx-service.yaml`apiVersion: v1 kind: Service metadata: namespace: loonzh name: nginx-service spec: selector: app: nginx ports:
- port: 10080
targetPort: 80
type: ClusterIP
1
2#### 9. 创建路由(LoadBalancer模式才需要创建Ingress,需要域名) `kubectl apply -f nginx-ingress.yaml`apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: loonzh name: nginx-ingress spec: ingressClassName: ingress rules:
- host: nginx.loonzh.cn http: paths:
- port: 80
targetPort: 80
nodePort: 30080
type: NodePort
- containerPort: 80
- path: /nginx
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 10080
```
10. 创建存储类()
11. 创建有状态副本集
11. 创建有状态副本集
- name: nginx-container
image: docker.1ms.run/nginx:1.29.6
ports: