如果曾经安装过,建议清理旧的配置
rm -rf /root/.kube
rm -rf /etc/cni/net.d
ipvsadm -C
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
安装docker
安装 kubeadm
kubeadm init \
--apiserver-advertise-address=172.16.51.9 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.1 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=192.168.0.0/16
安装 Pod 网络附加组件(calico或flannel)
calico安装文档
flannel flannel节点之间无法通信解决办法
允许控制平面节点上调度 Pod
kubectl taint nodes --all node-role.kubernetes.io/master-
加入节点
遇到问题
error execution phase control-plane-prepare/download-certs: error downloading certs: error downloading the secret: secrets "kubeadm-certs" is forbidden
# certificate-key 默认2小时的有效期,如果过期按照提示重新生成
# 使用命令重新生成 certificate-key
# 用新证书替换--certificate-key后面的内容
$ kubeadm init phase upload-certs --upload-certs
不关闭swap启动k8s
vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
dashboard
其他pc访问dashboard,端口转发
安装dashboard
ssh -L localhost:8001:localhost:8001 -NT root@<ip>
获取Token
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
安装helm
安装 ingress
选择下面任何一个即可
haproxy
traefik
外部负载均衡器 metalLB
ingress 配置Https
准备好证书文件,各种证书之间的转换方式参考转换证书格式
创建secret保存证书
kubectl create secret tls your-domian.com-tls -n your-namespace \
--cert=/root/ca/cert.pem \
--key=/root/ca/key.pem
ingress使用证书
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: haproxy
name: hello-https
namespace: your-namespace
spec:
rules:
- host: your-domian.com
http:
paths:
- backend:
service:
name: hello-tls
port:
number: 8080
path: /
pathType: Prefix
tls:
- hosts:
- your-domian.com
secretName: your-domian.com-tls
yum install systemd-networkd