大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述k8s部署-48-k8s中如何选择使用哪个api,开发一个k8s的容器管理平台的思路是什么?相关的知识,希望能为你提供帮助。
文章图片
k8s中有很多的api,我们的yaml文件开头一定要申明一个apiversion,怎么知道该使用哪个api呢?如何来选择正确的api呢?我们又该如何来开发一个基于k8s的容器管理平台,开发k8s容器管理平台的思路又是什么呢?本文我们来看看。
文章图片
1
查看k8s中的api
我们都知道k8s中有很多的api,那么如何查看k8s中所有的api呢?如何知道k8s中都有什么api,使用如下命令即可;
[root@node1 ~]# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
------省略部分内容------
[root@node1 ~]#
[root@node1 ~]# kubectl api-resources
NAMESHORTNAMESAPIVERSIONNAMESPACEDKIND
bindingsv1trueBinding
componentstatusescsv1falseComponentStatus
configmapscmv1trueConfigMap
endpointsepv1trueEndpoints
eventsevv1trueEvent
limitrangeslimitsv1trueLimitRange
namespacesnsv1falseNamespace
------省略部分内容------
[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 apiserver
root56911 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=false
root573323020 22:38 pts/000:00:00 grep --color=auto apiserver
[root@node1 ~]#
从上面的结果中可以看到master节点上apiserver的pid是5691,然后我们根据apiserver的pid来找到apiserver的端口号;
[root@node1 ~]# netstat -tunlp | grep 5691
tcp600 :::6443:::*LISTEN5691/kube-apiserver
[root@node1 ~]#
从上面可以看到apiserver端口号是6443。
【k8s部署-48-k8s中如何选择使用哪个api,开发一个k8s的容器管理平台的思路是什么()】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:anonymous
clusterrolebinding.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文件如何运行程序
?
推荐阅读
- (OK) iso—mkisofs—linux—fedora23
- (OK) 在CentOS7上安装Codeblocks的过程
- Centos7升级Python2到Python3
- (OK) CentOS 7—adb—android-sdk_r24.3.3-linux.tgz
- k8s部署-49-k8s日志采集的解决方案思路梳理
- (OK) 编译cBPM—CentOS7—gdb—gdbserver—成功—调试
- (OK) 编译cBPM-CentOS7-codeblocks
- 迅速大局部还原win8系统回收站文件的办法
- 预装Windows7/Windows8.1的电脑销售剩余时间不足一年