K8s入门指南之环境搭建/部署初始化(集群模式)超详细
Kubernates将一个集群分为Master和若干个Node,本篇讲分享如何在CentOS 7虚拟机上,用kubeadm工具,快速搭建安装一个Kubernates集群,适合有一定容器基础的学者。建议采用VMware Workstation 在本机中虚拟一个 64 位的 CentOS 虚拟机作为学习环境,虚拟机采用 NAT的网络模式以便连接外网,然后使用 kubeadm 快速安装一个 Kubern
Kubernates将一个集群分为Master和若干个Node,本篇讲分享如何在CentOS 7虚拟机上,用kubeadm工具,快速搭建安装一个Kubernates集群,适合有一定容器基础的学者。
建议采用VMware Workstation 在本机中虚拟一个 64 位的 CentOS 虚拟机作为学习环境,虚拟机采用 NAT的网络模式以便连接外网,然后使用 kubeadm 快速安装一个 Kubernetes 集群。详细步骤请参考:《VMware安装centOS镜像》
目录
一.环境准备
三台CentOS 7虚拟机,其中一台为Master,两台为Node。
可以参考《VMware安装centOS镜像》搭建虚拟机。
二.Master节点搭建
1.关闭swap
vi /etc/fstab
注释掉swap;
临时关闭:
swapoff -a;
2.关闭selinux
vi /etc/sysconfig/selinux
设置SELINUX=disabled,需要重启reboot。
3.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
4.启用网络配置
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
5.设置网桥参数
cat << EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
6.修改hosts文件
vi /etc/hosts
设置:192.168.140.132 k8s-single
7.修改hostname
hostnamectl set-hostname k8s-single
8.安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
9.docker配置systemd
创建 /etc/docker/daemon.json文件 ,内容为:
{
"registry-mirrors": ["https://t81qmnz6.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
10.重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
11.配置k8s下载资源配置文件
创建文件:/etc/yum.repos.d/kubernetes.repo,内容为:
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
12.安装 kubelet kubeadm kubectl
yum install -y --nogpgcheck kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5
13.查看是否安装成功
kubelet --version
kubectl version
kubeadm version
14.启动kubelet
systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet
15.init-config配置
生成文件:
kubeadm config print init-defaults > init-config.yaml
配置IP地址:localAPIEndpoint.advertiseAddress: 192.168.140.132
配置node的名称:nodeRegistration.name:master
配置阿里云镜像地址:imageRepository:registry.aliyuncs.com/google_containers
配置完后,文件如下:
16.重启容器
执行以下命令:
mv /etc/containerd/config.toml /tmp/
systemctl restart containerd
17.拉取k8s相关镜像
kubeadm config images pull --config=init-config.yaml
如果不行,用docker去拉取镜像:
for i in `kubeadm config images list --config=init-config.yaml`; do
imageName=${i#registry.k8s.io/}
docker pull $imageName
done;
如果出现下图,则已经成功:
18.部署K8s
kubeadm init \
--apiserver-advertise-address=192.168.140.132 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.5 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
过程可能要稍等几分钟,出现kubeadm join .....的提示,就证明执行成功了。
19.环境变量设置
如果省略这个步骤,执行kubectl get nodes会出现以下异常:
配置环境变量:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile;
source /etc/profile;
上面的方式,重启机器后会失效,持久的方式:
vi /etc/profile;
在后面新增一行:export KUBECONFIG=/etc/kubernetes/admin.conf
最后source /etc/profile;
如图,再次执行:kubectl get nodes,已经成功。
20.安装CNI插件
执行命令安装:
kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"
三.Node节点搭建
1.安装kubeadm kubelet
为两个node机器都执行上面‘Master节点搭建’的1 - 17个步骤,这几个步骤是在Master和Node机器都要执行的公共步骤,其目的是初始化Kubernates的一个基础依赖环境。
在Node上其实无需安装kubectl,可以去掉。
2.Node加入Master
Node节点初始化完成后,就可以加入Master,成为一个集群模式。
我们回到上面‘Master节点搭建’的第18个步骤,Master节点部署完成后,在命令行的最后一行中,会出现一个‘kubeadm join .....’的提示,我们在Node节点执行这行命令‘kubeadm join .....后,就可以成功加入Master集群。
有时候我们忘记这行命令了,也无处地方可以查找,这个时候就可以在Master机器上执行以下命令,重新活得这个命令:
kubeadm token create --print-join-command
3.Node节点安装CNI
当然,node节点也需要安装CNI插件,具体参考‘Master节点搭建’的第21个步骤。
四.验证Kubernetes集群是否工作正常
在Master机器上执行命令:
kubectl get nodes
执行命令:
kubectl get pods --all-namespaces
五.常见问题
1.The connection to the server localhost:8080 was refused - did you specify the right host or port?
解决:
设置环境变量
方式一:编辑文件设置
vim /etc/profile
在底部增加新的环境变量 export KUBECONFIG=/etc/kubernetes/admin.conf
方式二:直接追加文件内容
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
最后:source /etc/profile
2.Warning FailedScheduling 54s default-scheduler 0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate
解决:
允许master部署pod:
kubectl taint nodes --all node-role.kubernetes.io/master-
六.Kubernates卸载
yum -y remove kubelet kubeadm kubectl
sudo kubeadm reset -f
sudo rm -rvf $HOME/.kube
sudo rm -rvf ~/.kube/
sudo rm -rvf /etc/kubernetes/
sudo rm -rvf /etc/systemd/system/kubelet.service.d
sudo rm -rvf /etc/systemd/system/kubelet.service
sudo rm -rvf /usr/bin/kube*
sudo rm -rvf /etc/cni
sudo rm -rvf /opt/cni
sudo rm -rvf /var/lib/etcd
sudo rm -rvf /var/etcd
更多推荐
所有评论(0)