美文网首页linux运维
k8s部署-48-k8s中如何选择使用哪个api,开发一个k8s

k8s部署-48-k8s中如何选择使用哪个api,开发一个k8s

作者: 运维家 | 来源:发表于2022-05-02 21:12 被阅读0次

    k8s中有很多的api,我们的yaml文件开头一定要申明一个apiversion,怎么知道该使用哪个api呢?如何来选择正确的api呢?我们又该如何来开发一个基于k8s的容器管理平台,开发k8s容器管理平台的思路又是什么呢?本文我们来看看。

    1

    查看k8s中的api

    我们都知道k8s中有很多的api,那么如何查看k8s中所有的api呢?如何知道k8s中都有什么api,使用如下命令即可;

    [root@node1 ~]# kubectl api-versionsadmissionregistration.k8s.io/v1admissionregistration.k8s.io/v1beta1apiextensions.k8s.io/v1apiextensions.k8s.io/v1beta1------省略部分内容------[root@node1 ~]# [root@node1 ~]# kubectl api-resourcesNAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KINDbindings                                       v1                                     true         Bindingcomponentstatuses                 cs           v1                                     false        ComponentStatusconfigmaps                        cm           v1                                     true         ConfigMapendpoints                         ep           v1                                     true         Endpointsevents                            ev           v1                                     true         Eventlimitranges                       limits       v1                                     true         LimitRangenamespaces                        ns           v1                                     false        Namespace------省略部分内容------[root@node1 ~]# 

    那么k8s中的api是如何使用的呢?这个时候我们就需要登录k8s官网来查看了,访问:

    https://kubernetes.io/

    登录k8s官网之后界面如下(虽然右上角有切换语言的选项,不建议切换成中文,因为当你切换了之后,有一些东西是显示不出来的,这里就按照英文的来演示);

    然后我们点击“Documentation”,如下:

    再之后我们点击“Kubernetes API”:

    弹出如下界面:

    我们将该页面滑到文章末尾,点击“API Reference”(API参考):

    然后我们就到了api文档页面,我们可以在这里看到各种资源下的各种api接口如何使用,例如我们点击第一个“Workload Reference”;

    然后出现如下界面之后,我们再点击“POD”;

    然后我们就能看到在k8s中api的使用方式了;

    当然了,如果你使用的版本不是官网上最新的版本,你也可以点击右上角的内容“Versions”,来切换版本;

    2

    使用apiserver

    首先我们看下apiserver是否对外提供了服务,他对外提供的方式http访问方式,风格是restUrl;首先看下apiserver运行的pid是多少;
    [root@node1 ~]# ps -ef | grep apiserverroot       5691      1 22 22:37 ?        00:00:08 /usr/local/bin/kube-apiserver --advertise-address=192.168.112.130 --allow-privileged=true --apiserver-count=2 --audit-log-maxage=30 --audit-log-maxbackup=3 --audit-log-maxsize=100 --audit-log-path=/var/log/audit.log --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --client-ca-file=/etc/kubernetes/ssl/ca.pem --enable-admission-plugins=NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota --etcd-cafile=/etc/kubernetes/ssl/ca.pem --etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem --etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem --etcd-servers=https://192.168.112.130:2379,https://192.168.112.131:2379,https://192.168.112.132:2379 --event-ttl=1h --kubelet-certificate-authority=/etc/kubernetes/ssl/ca.pem --kubelet-client-certificate=/etc/kubernetes/ssl/kubernetes.pem --kubelet-client-key=/etc/kubernetes/ssl/kubernetes-key.pem --service-account-issuer=api --service-account-key-file=/etc/kubernetes/ssl/service-account.pem --service-account-signing-key-file=/etc/kubernetes/ssl/service-account-key.pem --api-audiences=api,vault,factors --service-cluster-ip-range=10.233.0.0/16 --service-node-port-range=30000-32767 --proxy-client-cert-file=/etc/kubernetes/ssl/proxy-client.pem --proxy-client-key-file=/etc/kubernetes/ssl/proxy-client-key.pem --runtime-config=api/all=true --requestheader-client-ca-file=/etc/kubernetes/ssl/ca.pem --requestheader-allowed-names=aggregator --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --tls-cert-file=/etc/kubernetes/ssl/kubernetes.pem --tls-private-key-file=/etc/kubernetes/ssl/kubernetes-key.pem --v=1 --feature-gates=RemoveSelfLink=falseroot       5733   2302  0 22:38 pts/0    00:00:00 grep --color=auto apiserver[root@node1 ~]#
    从上面的结果中可以看到master节点上apiserver的pid是5691,然后我们根据apiserver的pid来找到apiserver的端口号;
    [root@node1 ~]# netstat -tunlp | grep 5691tcp6       0      0 :::6443                 :::*                    LISTEN      5691/kube-apiserver [root@node1 ~]#
    从上面可以看到apiserver端口号是6443。1、查看健康状态然后我们简单的来测试下apiserver对外提供的健康检查接口;
    [root@node1 ~]# curl -k https://localhost:6443/healthz;echo ""ok[root@node1 ~]#
    可以看到当我们调用apiserver的healthz接口的时候,它给我们返回了OK的字样,说明这个服务是正常的。2、查看k8s中所有的pod信息又例如来使用curl命令来调用apiserver的/api/v1/pod这个接口,看下我们这个集群中的所有pod的信息,但是执行的时候报错了:
    [root@node1 ~]# curl -k https://localhost:6443/api/v1/pods{  "kind": "Status",  "apiVersion": "v1",  "metadata": {      },  "status": "Failure",  "message": "pods is forbidden: User \"system:anonymous\" cannot list resource \"pods\" in API group \"\" at the cluster scope",  "reason": "Forbidden",  "details": {    "kind": "pods"  },  "code": 403}[root@node1 ~]#
    提示我们不允许匿名访问,那么我们就给他进行如下配置:
    [root@node1 ~]# kubectl create clusterrolebinding test:anonymous --clusterrole=cluster-admin --user=system:anonymousclusterrolebinding.rbac.authorization.k8s.io/test:anonymous created[root@node1 ~]#
    然后我们再次访问:
    [root@node1 ~]# curl -k https://localhost:6443/api/v1/pods{  "kind": "PodList",  "apiVersion": "v1",  "metadata": {    "selfLink": "/api/v1/pods",    "resourceVersion": "676917"  },  "items": [    {      "metadata": {        "name": "springboot-web-demo-5c9446ffbf-prfv4",        "generateName": "springboot-web-demo-5c9446ffbf-",        "namespace": "default",        "selfLink": "/api/v1/namespaces/default/pods/springboot-web-demo-5c9446ffbf-prfv4",        "uid": "8d61ef15-03a4-44b4-9117-83c6a540e403",        "resourceVersion": "676328",------省略部分内容------[root@node1 ~]#
    3、查看k8s中node的信息又例如我们想看下apiserver中node节点的信息:剩余内容请转至VX公众号 “运维家” ,回复 “154” 查看。

    ------ 以下内容为防伪内容,忽略即可 ------

    ------ 以下内容为防伪内容,忽略即可 ------

    ------ 以下内容为防伪内容,忽略即可 ------

    linux基础学习linux内核详解linux搭建nexuslinux系统补丁查看linux查看未分区linux组合键linux文件安装位置查看当前linux环境用户linux挂载u盘已经挂载Linux用户三天不能改密码linux编辑文件vim命令linux下渲染工具linux开机自动挂载存储运维linux系统基础linux中attribLinux关掉占用的端口linux改名主机名linux计数txt文件linux单用户没有命令linux文件如何运行程序

    相关文章

      网友评论

        本文标题:k8s部署-48-k8s中如何选择使用哪个api,开发一个k8s

        本文链接:https://www.haomeiwen.com/subject/ipvvyrtx.html