从零开始搭建k8s集群(三) k8s集群安装

前言

在开始今天的k8s集群安装之前,再次提醒各位读者保存一下当前的镜像,方便出现不必要的问题可随时回退。该篇将实现一个最简版的k8s集群,并通过一个小demo来验证集群安装的成功与否。另外,本文的命令操作如果没有特殊说明,每台机器都要执行,如果某台机器需要单独执行的命令,本文会特殊说明。另外将本文的参考博客也列出如下,感谢前辈们的无私付出,读者也可自行参考。

https://blog.csdn.net/networken/article/details/84991940

https://blog.csdn.net/java_zyq/article/details/82149869

安装

  • 添加kubernetes源,这里配置为阿里云的镜像源

#配置kubernetes源

cat < /etc/yum.repos.d/kubernetes.repo
[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

从零开始搭建k8s集群(三) k8s集群安装_第1张图片

  • 安装kubernetes组件

#安装 kubelet 、kubeadm、 kubectl

yum install -y kubelet kubeadm kubectl

从零开始搭建k8s集群(三) k8s集群安装_第2张图片

  • 启动kubelet

#启动kubelet

 systemctl enable kubelet && systemctl start kubelet

  • 部署master节点,此步骤只在master节点执行

#master节点安装,说明:pod-network-cidr(pod节点网络初始化);kubernetes-version(安装的k8s版本);apiserver-advertise-address(主节点的 IP 地址);image-repository(k8s初始化的镜像,这里配置为阿里云的镜像,否则会去google的库拉取镜像,由于国内不能访问其官网镜像,如果不配置 ,这里会报拉取镜像出错的问题。网上还提供了另外一种解决方案,通过github和dockerhub配合使用,拉取镜像,大家也可以自行尝试)。此过程因为要拉取镜像,所以过程可能会很慢,请大家耐心等待。

 kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version=v1.18.2 --apiserver-advertise-address=192.168.23.130 --image-repository=registry.aliyuncs.com/google_containers

#很不幸的是这里面报了一个错,我们的master并没有初始化成功,

从零开始搭建k8s集群(三) k8s集群安装_第3张图片

#然而意外之喜的是,这里k8s初始化的镜像已经帮我们拉下来了,哈哈,有得也有失吗

docker images

#我猜想可能是拉取镜像的时间太长,导致我们的k8s主节点没有初始化成功,这里我们重置一下k8s的kubeadm,然后再次执行上面的命令

kubeadm reset

从零开始搭建k8s集群(三) k8s集群安装_第4张图片

 #再次执行上面的命令

kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version=v1.18.2 --apiserver-advertise-address=192.168.23.130 --image-repository=registry.aliyuncs.com/google_containers

从零开始搭建k8s集群(三) k8s集群安装_第5张图片

#居然成功了,有木有。这里我们将以下命令代码记录下来,方便后面其它节点执行该命令加入到我们的集群中

kubeadm join 192.168.23.130:6443 --token 6rc83u.nh3m19pypf024dw7     --discovery-token-ca-cert-hash sha256:cf73c46a33f6abae1bfc9eb6ef29050ddaadc3c7be880ec8cbe26fb4b2c42aaa

从零开始搭建k8s集群(三) k8s集群安装_第6张图片

 #按照提示我们还需要执行三个命令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

  •  安装calico网络插件,使得pod之间可以通信,也可以使用flannel网络插件,但是据说calico的功能更加强大,flannel的功能它都可以实现,那我们就来安装一下calico吧

#安装calico网络插件

kubectl apply -f https://docs.projectcalico.org/v3.10/manifests/calico.yaml

从零开始搭建k8s集群(三) k8s集群安装_第7张图片

  • 查看我们的主节点是否已经在运行

#查看节点

kubectl get nodes

 #查看pod节点,这里如果status如果没有显示为running状态,可能还在启动容器组件,请耐心等待一会,这里我们pod的网络也安装好了

kubectl -n kube-system get pods

从零开始搭建k8s集群(三) k8s集群安装_第8张图片

  • 到这里,我们的集群基本上算是安装完成了,最后将我们的work01和work02节点加入到我们的集群中去,分别在我们的work01和work02节点执行以下操作

#work01执行我们上面保存的命令,work02同work01,这里不再赘述。

kubeadm join 192.168.23.130:6443 --token 6rc83u.nh3m19pypf024dw7     --discovery-token-ca-cert-hash sha256:cf73c46a33f6abae1bfc9eb6ef29050ddaadc3c7be880ec8cbe26fb4b2c42aaa

 从零开始搭建k8s集群(三) k8s集群安装_第9张图片

这里如果没有记录此命令在初始化完主节点的时候,也可以在主节点执行以下命令获取

 kubeadm token create --print-join-command

  • 查看集群状态

#查看node节点,我们的从节点已经加入到集群中

kubectl get nodes

 从零开始搭建k8s集群(三) k8s集群安装_第10张图片

#查看pod状态

 kubectl -n kube-system get pods -o wide

从零开始搭建k8s集群(三) k8s集群安装_第11张图片

  • 到这里我们的集群就已经搭建完毕了,status都已经running了,这里我们在pod上安装一个应用,验证一下我们的集群

#部署一个 Nginx Deployment,包含6个Pod副本 

cat > nginx.yaml < apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 6
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
EOF

 从零开始搭建k8s集群(三) k8s集群安装_第12张图片

#创建nignx应用

 kubectl apply -f nginx.yaml

#设置服务

kubectl expose deployment nginx-deployment --type=NodePort --name=nginx-service

 

#查看服务

 kubectl get svc

#访问一下我们的nginx,看是否已经部署成功,这里只能访问从节点,主节点只负责pod的创建和调度等,当然也可以把主节点部署pod,我们后面再说。

curl 192.168.23.131:30699

curl 192.168.23.132:30699

从零开始搭建k8s集群(三) k8s集群安装_第13张图片

从零开始搭建k8s集群(三) k8s集群安装_第14张图片

#查看一下我们的pod,确实有6个副本

kubectl get pod

从零开始搭建k8s集群(三) k8s集群安装_第15张图片

  •  将master节点发布为node

#查询master节点的taints污点状态

kubectl describe nodes | grep Taints

#master节点发布为node节点,去掉taints污点

kubectl taint node k8s-master node-role.kubernetes.io/master-

#还原操作

kubectl taint node k8s-master node-role.kubernetes.io/master=:NoSchedule

  •  最后我们记录一下如何移除节点

#在主节点执行以下命令,这里以work01为例

kubectl drain k8s-work01 --delete-local-data --force --ignore-daemonsets

kubectl delete node k8s-work01

#在k8s-work01节点上执行以下命令,重置节点

kubeadm reset -f

后续

到这里就又到了和大家说再见的时候了,本次的k8s集群安装也就结束了,虽然言尤未尽。但是总归要结束的,虽然以上大多都是来自网上博客的内容,但也是作者辛苦尝试出来的,遇到了许多的问题,最终得以以一个成功的东西展示给大家,希望对你有一点点帮助都是好的,创作不易,如有错误,恳请批评指出,本人一定虚心接受,加以改正,如果能得到您的一个小小的赞,会更加的开心,哈哈,那么今天就到这里了,我们下期见。

 

你可能感兴趣的:(k8s)