0 官方文档
https://docs.k3s.io/zh/quick-start
1 安装
1 | curl -sfL https://get.k3s.io | sh - |
INSTALL_K3S_VERSION:安装指定版本
1 curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_VERSION=v1.26.9+k3s1 sh -
2 命令行支持tab自动补全
1 | echo 'source <(kubectl completion bash)' >> ~/.bashrc |
断开连接,再次连接,即可生效
如果报错:
-bash: _get_comp_words_by_ref: command not found
安装
bash-completion
:
1
2
3 yum -y install bash-completion
source /usr/share/bash-completion/bash_completion
3 验证
部署一个 nginx 进行测试
1 | #部署nginx |
防火墙放行对应端口即可
1 | systemctl status firewalld |
4 获取真实IP
参考:https://blog.csdn.net/easylife206/article/details/111243763
4.1 NortPort 方式
service发布为NortPort,同时修改externalTrafficPolicy
为Local
1 | kubectl patch svc myservice -p '{"spec":{"externalTrafficPolicy":"Local"}}' |
4.2 Ingress 方式
在k3s中,设置traefik的externalTrafficPolicy
为Local
,此时service就可以不做处理了,也可以不用发布为NortPort(域名访问时)
1 | kubectl -n kube-system patch svc traefik -p '{"spec":{"externalTrafficPolicy":"Local"}}' |
5 cert-manager 颁发ssl证书
参考:https://blog.csdn.net/j610152753/article/details/127581375
5.1 准备
- k8s(k3s)集群环境
- 有效的域名(如果是国内云服务器还需要备案)
- 一个可登录的邮箱
5.2 部署cert-manager
直接使用kubectl安装
1 | kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.1/cert-manager.yaml |
运行如下命令可看到创建了3个pod,并STATUS为:Running
1 | kubectl get pods --namespace cert-manager |
5.3 配置ClusterIssuer
创建clusterIssuer.yml
并部署
1 | apiVersion: cert-manager.io/v1 |
1 | kubectl apply -f clusterIssuer.yml |
5.4 测试
Deployment、Service正常创建即可,Ingress新增两处配置:metadata.annotations
、spec.tls
,例如:
1 | apiVersion: networking.k8s.io/v1 |
6 自动跳转 https
6.1 创建Middleware
中间件的介绍和使用:https://blog.csdn.net/j610152753/article/details/127251204
vi redirect-https.yaml
1 | apiVersion: traefik.containo.us/v1alpha1 |
6.2 配置Ingress
添加注解traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd
default是Middleware所在的命名空间
redirect-https为Middleware的name