关闭防火墙
# 停用
systemctl stop firewalld
# 禁用
systemctl disable firewalld
关闭selinux
setenforce 0
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
关闭swap
# 临时关闭
swapoff -a
# 可以通过这个命令查看swap是否关闭了
free
# 永久关闭 注释swap那一行
vim /etc/fstab
将桥接的IPV4流量传递到iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
设置docker的yum阿里repos文件
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://h838z27l.mirror.aliyuncs.com"]
}
EOF
设置k8s的yum阿里repos文件
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
安装docker
# yum安装docker
yum install docker-ce-19.03.5 docker-ce-cli-19.03.5 containerd.io
#启动docker服务
systemctl enable docker
#开启docker服务
systemctl start docker
安装kubeadm,kubelet和kubectl
#yum安装
yum install kubelet-1.20.1 kubeadm-1.20.1 kubectl-1.20.1 -y
#启用kubelet服务
systemctl enable kubelet
部署master节点
kubeadm init \
--apiserver-advertise-address=192.168.31.104 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.1 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
这过程会比较长,当镜像拉不下来时会报错,从出错信息中我们可以找到要的镜像,下面是我当时出错信息
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR ImagePull]: failed to pull image registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0: output: Error response from daemon: pull access denied for registry.aliyuncs.com/google_containers/coredns/coredns, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
, error: exit status 1
根据这个出错信息,去hub.docker.com中去找对应的镜像
# 拉取镜像
docker pull coredns/coredns:1.8.0
# 改名为阿里的镜像
docker tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0
把需要的镜像全部拉取后,再次执行 kubeadm init 命令,然后执行下面命令即可完成master节点部署
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 可以查看到master节点
kubectl get nodes
安装flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
部署node节点
文档中部署master节点之前的步骤需要在node节点上执行,然后按下面的步骤来部署node节点
首先在master节点执行以下命令,生成token,打印节点加入命令
# 生成token,打印节点加入命令
kubeadm token create --print-join-command
输出信息类似如下:
kubeadm join 192.168.123.233:6443 --token rv8o1l.ucxq2tmvlo8mo4jx --discovery-token-ca-cert-hash sha256:7724beb8987c1780d3f3c5b4d2b3a47b573b296e8584aa30beb0c4b48f741887
copy这个kubeadm join命令在node节点上执行
kubeadm join 192.168.123.233:6443 --token rv8o1l.ucxq2tmvlo8mo4jx --discovery-token-ca-cert-hash sha256:7724beb8987c1780d3f3c5b4d2b3a47b573b296e8584aa30beb0c4b48f741887
然后回到master节点用命令获取节点,就可以看到新加入的node节点了
常用命令
# 常用命令
#获取所有的命名空间下的pod
kubectl get pods --all-namespaces
kubectl get nodes # 获取集群所有节点
kubectl get all # 获取所有的包括pod,deploy,secrets,deployments,replicationcontrollers 等
kubectl get pod # 获取当前所有的pod
# 查看资源详情,可以看到出错信息,部署过程中利用此命令可发现很多问题哦
kubectl describe pod|service|node 资源名称
kubectl create -f ***.yaml # 创建资源
kubectl delete -f ***.yaml # 删除资源
kubectl --help 查看更多命令手册