1. 初始化操作
# 关闭 FW、SWAP
sudo ufw disable
swapoff -a
2. 安装 docker-ce 并启动
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install docker-ce -y
systemctl enable docker && systemctl start docker
systemctl status docker
sudo mkdir -p /etc/docker
systemctl start docker && systemctl enable docker
# ubuntu18.04 需要使用 systemd
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"storage-driver": "overlay2",
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"ip-forward": true,
"live-restore": false,
"log-opts": {
"max-size": "100m",
"max-file":"3"
},
"default-ulimits": {
"nproc": {
"Name": "nproc",
"Hard": 32768,
"Soft": 32768
},
"nofile": {
"Name": "nofile",
"Hard": 32768,
"Soft": 32768
}
}
}
EOF
sed -i 's/-H fd:\/\/ //g' /lib/systemd/system/docker.service
systemctl daemon-reload && systemctl restart docker
systemctl status docker
3. 安装 kubeadm、kubectl、kubelet
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat << EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF
apt-get update
apt-get -y install kubelet=1.22.5-00 kubeadm=1.22.5-00 kubectl=1.22.5-00
systemctl enable kubelet
查看 kubeadm 启动所需的镜像
:镜像需要提前下载,或者使用国内的地址
# kubeadm config images list
I0907 22:10:58.091690 21993 version.go:255] remote version is much newer: v1.25.0; falling back to: stable-1.22
k8s.gcr.io/kube-apiserver:v1.22.13
k8s.gcr.io/kube-controller-manager:v1.22.13
k8s.gcr.io/kube-scheduler:v1.22.13
k8s.gcr.io/kube-proxy:v1.22.13
k8s.gcr.io/pause:3.5
k8s.gcr.io/etcd:3.5.0-0
k8s.gcr.io/coredns/coredns:v1.8.4
#!/bin/bash
while read line
do
docker pull $line
done < images.list
4. 执行 init
kubeadm init \
--apiserver-advertise-address=192.168.10.36 \
--image-repository "registry.aliyuncs.com/google_containers" \
--kubernetes-version v1.22.5 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
--ignore-preflight-errors=all
执行失败重置
kubeadm reset -f
rm -rf /etc/kubernetes
5. 使用 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
6. 安装 calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
mkdir -p /data/calico/bpf
sed -i -r "s#/sys/fs#/data/calico#g" calico.yaml
sed -i -r "s#sys-fs#data-calico#g" calico.yaml
7. 去除污点
kubectl taint nodes --all node-role.kubernetes.io/master-
8. 查看集群
kubectl get nodes
kubectl get pods -o wide -n kube-system
9. 使用集群
kubectl get nodes
kubectl get pods -o wide -n kube-system
10. 安装 metric-server
K8S 安装 Metric-server
11. node 加入集群
kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>
获取 token
kubeadm token list
获取 hash
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
例:
kubeadm join --token <token> 192.168.10.20:6443 --discovery-token-ca-cert-hash sha256:<hash>
Ubuntu18.04 安装 docker