安装文档:https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
参考:
https://blog.csdn.net/qq_34041723/article/details/115842607
1、集群规划
node002 192.168.20.132 master
node003 192.168.20.133 node1
node004 192.168.20.134 node2
资源:3c4g100G
系统:centos7.6(内核3.10.0)
版本:
docker-v18.06.1
k8s-v1.18.0
以下版本同样适用该步骤:
docker-v20.10.18
k8s-v1.21.14
2、准备环境:
#在初始化操作基础上再做以下操作:
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.20.132 node002
192.168.20.133 node003
192.168.20.134 node004
EOF
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
3、所有节点安装Docker/kubeadm/kubelet
(1)安装Docker
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
$ systemctl enable docker && systemctl start docker
$ docker --version
Docker version 18.06.1-ce, build e68fc7a
$ cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
$ systemctl daemon-reload
$ systemctl restart docker
(2)添加阿里云YUM软件源
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
(3)安装kubeadm,kubelet和kubectl
$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
$ systemctl enable kubelet
4、部署master
#在master执行
$ kubeadm init \
--apiserver-advertise-address=192.168.20.132 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
使用kubectl工具:(kubeadm init输出的kubectl相关命令)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get nodes
5、加入Kubernetes Node
#在node上执行(kubeadm init输出的kubeadm join命令)
kubeadm join 192.168.20.132:6443 --token to8n1j.m95bbrlvpp49cbfc \
--discovery-token-ca-cert-hash sha256:b2140fdec7032372680e0eee83cc17d6a233f4991f28cacb0129c4f99760e227
6. 部署CNI网络插件
#安装calico
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
#验证所有数据
[root@node002 ~]#kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-75d555c48-tk5sd 1/1 Running 0 2m4s
kube-system calico-node-79s9v 1/1 Running 0 2m4s
kube-system calico-node-89chs 1/1 Running 0 2m4s
kube-system calico-node-fsh4n 1/1 Running 0 2m4s
kube-system coredns-7ff77c879f-cmsz9 1/1 Running 0 13m
kube-system coredns-7ff77c879f-ggrvd 1/1 Running 0 13m
kube-system etcd-node002 1/1 Running 0 13m
kube-system kube-apiserver-node002 1/1 Running 0 13m
kube-system kube-controller-manager-node002 1/1 Running 0 13m
kube-system kube-proxy-b8ccw 1/1 Running 0 13m
kube-system kube-proxy-dwn2h 1/1 Running 0 10m
kube-system kube-proxy-ndxpr 1/1 Running 0 10m
kube-system kube-scheduler-node002 1/1 Running 0 13m
[root@node002 ~]#kubectl get nodes
NAME STATUS ROLES AGE VERSION
node002 Ready master 14m v1.18.0
node003 Ready <none> 10m v1.18.0
node004 Ready <none> 10m v1.18.0
7. 测试kubernetes集群
在Kubernetes集群中创建一个pod,验证是否正常运行:
$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-f89759699-l4tjt 1/1 Running 0 21m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 40m
service/nginx NodePort 10.96.147.252 <none> 80:31331/TCP 21m
#验证:
http://192.168.20.132:31331/