利用kubeadm来部署k8s集群环境

关闭防火墙

# 停用
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 查看更多命令手册

你可能感兴趣的:(利用kubeadm来部署k8s集群环境)