支持 amd64和 arm64环境
已配置ipv4、ipv6双网络支持。
较新版本的k8s已经不支持docker了,需要配置containerd
bash init-config.sh
- 配置必要的内核加载
- 配置必要的网络环境
- 安装containerd
- 安装1.26.6版本的k8s工具
确保你具备
/run/systemd/resolve/resolv.conf
文件,也就是sudo systemctl enable --now systemd-resolved.service
如果你想要使用
/etc/resolv.conf
而不是/run/systemd/resolve/resolv.conf
文件。请修改kubeadm-config-aliyun.yaml
中的#resolvConf: /etc/resolv.conf
。改成resolvConf: /etc/resolv.conf
取消注释即可
sudo vim /etc/default/kubelet
添加下述内容:KUBELET_EXTRA_ARGS=--cgroup-driver=systemd --fail-swap-on=false --max-pods=900
- 打开
kubeadm-config-aliyun.yaml
文件,根据提示修改里面的一些配置。例如ip、域名等。 - 执行初始化命令:
bash init-k8s-aliyun.sh
安装完成后,会有提示让你复制秘钥文件到 $HOME/.kube 下,安装它的提示执行相关命令即可
如果你是单节点运行,请在配置了config后执行
bash single_master.sh
将当前节点加入master的角色
kubectl label nodes ubuntu-master node-role.kubernetes.io/master=
其中ubuntu-master
换成你自己的nodename
- 配置k8s秘钥
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
sudo kubeadm reset -f
执行这个,将会完全干掉当前的k8s环境。
-
安装calico(v3.23.3)网络插件(已调整支持ipv6)
kubectl apply -f calico.yaml
卸载方式:
kubectl delete -f calico.yaml
如果你部署过程中 一直发现
calico-node-xxxxx
这个pod init失败。请打开calico.yaml
或者calico_noipv6.yaml
文件找到
IP_AUTODETECTION_METHOD
的配置。将interface=^e.*
补充得更详细点(正则匹配网卡出问题了,可能匹配出来了多个)。例如你的lan网卡是 'eth0'。则这里可以填interface=^eth.*
-
安装ingress(1.3.0),这里有两种方式安装,二选一:
- hostport。会占用本机的80和443端口。如果本机不需要nginx或者nginx配置成其他端口,可以使用。
kubectl apply -f ingress_hostport.yaml
- nodeport。会随机生成两个端口,分别代表http和https端口。不会占用本机的80和443。
kubectl apply -f ingress_nodeport.yaml
安装完成后,执行
kubectl get svc -n ingress-nginx
可以看到 80和443分别映射出来的端口。输入
kubectl get pod -n ingress-nginx
查看ingress的安装进度。等所有pod都ok了,就可以了。kubectl delete -f ingress_hostport.yaml
或者kubectl delete -f ingress_nodeport.yaml
填你安装的时候选择的方式。 -
(可选,非必须) ip-masq-agent 使容器内部能够访问外部的Ipv6公网地址。
kubectl apply -f ip-masq-agent-config.yaml
kubectl apply -f ip-masq-agent.yaml
kubectl delete -f ip-masq-agent.yaml kubectl delete -f ip-masq-agent-config.yaml
-
安装 helm 包管理器
- 通过 apt源安装 (国内可能会被墙 或者速度慢)
bash install-helm.sh
sudo apt-get remove helm
- 通过snap包安装 (ubuntu自带snap)
bash install-helm-snap.sh
sudo snap remove helm
- 通过二进制包安装:
去
https://github.com/helm/helm/releases
下载安装即可
- 通过 apt源安装 (国内可能会被墙 或者速度慢)
-
dns-custom 安装自定义dns服务(有时候自带的coredns不解析的时候用它挺好的)
kubectl apply -f dns-custom.yaml
kubectl delete -f dns-custom.yaml
-
安装证书免费签发工具cert-manager
bash install-CRDs-with-customdns.sh
helm uninstall cert-manager --namespace cert-manager
-
(可选,非必须) 添加dnspod(实际是腾讯云接口)的dns证书签名验证方式
需要先安装 cert-manager 才能安装该 cert-manager的插件。
- 通过 https://console.cloud.tencent.com/cam/capi 获取
secretid
和secretkey
. - 修改
install-qcloud-cm.sh
中的对应的参数 - 执行
bash install-qcloud-cm.sh
- 证书申请demo:
- 修改
test-dnspod-cert.yaml
中的域名、证书名、命名空间 - 执行
kubectl -f test-dnspod-cert.yaml
- 修改
helm uninstall cert-manager-webhook-dnspod -n cert-manager
- 通过 https://console.cloud.tencent.com/cam/capi 获取
-
(可选,非必须) 添加cloudflare 方式进行dns证书签名
- 打开
clouflare-cm.yaml
填入你的对应信息。 apiTokenSecretRef
和apiKeySecretRef
二选一。注释掉另一方。- 执行
kubectl apply -f clouflare-cm.yaml
- 证书申请demo:
- 修改
test-cf-cert.yaml
中的域名、证书名、命名空间 - 执行
kubectl -f test-cf-cert.yaml
- 修改
kubectl delete -f clouflare-cm.yaml
- 打开
-
(可选,非必须) 添加aliyun的dns证书签名验证方式
需要先安装 cert-manager 才能安装该 cert-manager的插件。
- 通过 https://ak-console.aliyun.com/?spm=5176.2020520001.0.0.dCHOyj#/accesskey 获取
Access Key ID
和Access Key Secret
. - 修改
install-aliyun-cm.sh
中的对应的参数 - 执行
bash install-aliyun-cm.sh
- 证书申请demo:
- 修改
test-alidns-cert.yaml
中的域名、证书名、命名空间 - 执行
kubectl -f test-alidns-cert.yaml
- 修改
kubectl delete -f alidns.yaml
- 通过 https://ak-console.aliyun.com/?spm=5176.2020520001.0.0.dCHOyj#/accesskey 获取
-
安装一个web管理面板:
- 执行
kubectl apply -f kuboard-v3.yaml
- 安装完成后,打开 http://你的ip:30080 进行登录
- 默认账号 admin
- 默认密码 Kuboard123
kubectl delete -f kuboard-v3.yaml
- 执行
- 查看是否有可升级的版本(仅master执行):
sudo kubeadm upgrade plan
- 安装新的小版本的工具。(master和node都执行) 例如安装 1.26.7版本:
sudo apt install -y kubelet=1.26.7-00 kubeadm=1.26.7-00 kubectl=1.6.7-00 --allow-downgrades --allow-change-held-packages
- 执行集群升级。(仅master执行) 例如升级到 1.26.7:
sudo kubeadm upgrade apply v1.26.7
- 锁定 kubeadm工具版本号 (master和node都执行):
sudo apt-mark hold kubelet kubeadm kubectl
ps: 大版本升级需要小心,注意api版本是否兼容。k8s大版本升级只能一级一级的升上去。不能跨多个大版本升级。
因阿里云的k8s源调整,换大版本,需要手动修改
/etc/apt/sources.list.d/k8s.list
文件中的版本号。并重新拉取对应版本的gpg公钥。
因为默认生成的证书有效期只有1年,所以每年都需要更新一次系统证书。
这里提供脚本把系统证书刷新成10年的
sudo bash update-kubeadm-cert-crictl.sh all
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config