概述
最近一直在学习kuberntes,因为容器化应用程序编排带来的便利,在云原生时代具有不可替代的地位,成为云原生领域的现象级产品,正是因为kuberntes的成熟社区,kuberntes衍生出来的k3s、kubeEdge等同样是CNCF原子开源基金会的毕业项目在边缘计算领域成为不二之选。最近在使用kubeEdge实现新一代网关开发,前提条件是搭建一个kubernetes集群,对于搞网关这种低资源的硬件的开发组,一般不会配备很多很好的计算机资源,其实通过污点配置,可以实现在一台机器搭建kubernetes集群,kubectl apply的deployment也会分发到同一台机器,下面演示具体的操作。
kubectl基础
用到的工具主要是kubectl,实现与集群通信的命令行工具,kubectl在日常使用中会经常用到的指令包括:
-
kubectl get componentstatuses
-
kubectl cluster-info
-
kubectl get nodes
-
kubectl get pods --all-namespaces -o wide --show-labels
-
kubectl get svc --all-namespaces
-
kubectl get deployments --all-namespaces
-
kubectl get deployment cloudcore -n kubeedge -o yaml>cloudcore.yaml
-
kubectl describe nodes k8s-01|less
-
kubectl describe pod tomcat-866545b9b5-g74c9
-
kubectl edit svc cloudcore -n kubeedge
-
kubectl logs jetlinks-ce-568bc775bd-ndrqt -n default
-
kubectl exec -it jetlinks-ce-ui-7ccc54f44b-k5j9b -- sh
操作步骤
使用的核心语句即:
-
kubectl taint node k8s-master node-role.kubernetes.io/control-pannel-
-
kubectl describe node k8s-master |grep Taint
按照kubernetes网关的安装步骤进行即可,keadm init安装完成后,通过crictl info、kubectl get pods,nodes指令如下图:
关键步骤在这里,查看k8s-master这台机器的污点,发现是NoSchedule,这样是不会给master分配deployment,使用核心语句去掉污点后,grep确认下。这个关键步骤操作后,再通过kubectl apply语句执行下发或者keadm init指令后会发现master上运行了新的pod,即实现k8s-master这个node既当control pannel又充当work node。实现效果如图:
污点配置在后面的开发中会根据业务实际情况灵活配置,例如作者开发的kubeEdge网关应用,edge端都是计算资源很低的设备,kubernetes的容器编排需要污点和标签配合使用,用来禁止将服务端的容器编排到edge端。
持续更新:地址