K8s入门指南之环境搭建/部署初始化(集群模式)超详细

Kubernates将一个集群分为Master和若干个Node,本篇讲分享如何在CentOS 7虚拟机上,用kubeadm工具,快速搭建安装一个Kubernates集群,适合有一定容器基础的学者。

建议采用VMware Workstation 在本机中虚拟一个 64 位的 CentOS 虚拟机作为学习环境,虚拟机采用 NAT的网络模式以便连接外网,然后使用 kubeadm 快速安装一个 Kubernetes 集群。详细步骤请参考:《VMware安装centOS镜像

目录

一.环境准备

二.Master节点搭建 

1.关闭swap

2.关闭selinux

3.关闭防火墙 

4.启用网络配置

5.设置网桥参数

6.修改hosts文件

7.修改hostname

8.安装docker

9.docker配置systemd

10.重启docker

11.配置k8s下载资源配置文件

12.安装 kubelet kubeadm kubectl

13.查看是否安装成功

14.启动kubelet

15.init-config配置

16.重启容器

17.拉取k8s相关镜像

18.部署K8s

19.环境变量设置 

20.安装CNI插件

三.Node节点搭建

1.安装kubeadm kubelet

 2.Node加入Master

3.Node节点安装CNI

四.验证Kubernetes集群是否工作正常 

五.常见问题 

 六.Kubernates卸载


一.环境准备

三台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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值