Kubernetes/4.Kubernetes快速入门

Kubernetes快速入门

经过本章节的学习,你能够充分了解到一个https的kubernetes集群中所需的证书及其做用,以及kubernetes语境内的api资源类型,最后我还补充了几个基础的GET命令,此时你能够登陆到上一章节咱们使用kubeadm建立的集群,进行一些查询操做了。前端

  • 证书管理
  • API资源模型
  • API资源类型
  • 命令补充
  • 备注

证书管理

k8s证书

k8s于生产环境运行时,我强烈建议你们运行在https的安全环境下,其证书可分为如下三大类:node

root CA:nginx

  • apiserver:apiserver本身的证书
  • apiserver-kubelet-client:kubelet客户端链接apiserver时的客户端证书

etcd CA:git

  • etcd-server:etcd服务端证书
  • etcd-peer:etcd对等证书,用于etcd集群间https通讯
  • etcd-healthcheck-client:etcd健康检查的客户端证书
  • apiserver-etcd-client:apiserver链接etcd的客户端证书

front-proxy CA:github

  • front-proxyserver-client:apiserver(中的聚合器aggregator)于前端的客户端证书

你须要注意的是:
1) k8s集群证书默认有效期是90天,你有2个办法去调整(修改go源文件或者证书签名请求生成时声明,如何修改我后面章节会说)
2) 证书的过时时间,你能够到/etc/kubernetes/pki目录下,使用如下命令进行查看:docker

openssl x509 -in front-proxy-client.crt   -noout -text  |grep Not
            Not Before: Nov 28 09:07:02 2018 GMT
            Not After : Nov 25 09:07:03 2028 GMT

openssl x509 -in apiserver.crt   -noout -text  |grep Not
            Not Before: Nov 28 09:07:04 2018 GMT
            Not After : Nov 25 09:07:04 2028 GMT

API资源模型

RESTfulAPI的核心组件是“资源(resource)”,不一样类别的事物会被抽象会不一样“类型(type)”的资源。
k8s中的资源也相似于对象式编程语言中的“类"(class),但它仅支持有限的方法,并且一般是标准的HTTP方法,例如:GET、PUT、POST和DELETE;此时,你应该能够联想到经常使用的基础命令kubelet:编程

kubectl get pod
kubectl delete node
...
  • 为了便于独立进行版本演进,Kubernetes将API划分为了称为“API群组”的逻辑集合,每一个群组的REST路径为“/apis/$GROUP_NAME/$VERSION”,例如/apis/apps/v1;
  • 核心群组core使用简化的REST路径/api/v1;
  • 同时,每一个群组可同时存在多个不一样级别的版本,主要包括alpha、beta和stable三个,使用的级别标识如v1alpha一、v1beta2和v1等。

你能够经过api-versions命令查询当前所支持的API版本:api

[root@k8s-etcd-mater01 cds-filesystem]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
apps/v1beta1
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

API资源类型

API资源类型

如图所示,Kubernetes系统把管理的绝大多数事物都抽象成了资源,它们分别表明着不一样的事物类型,例如:Node、Service、Pod、Controller等等安全

  • 每种类型都可经过“属性赋值”进行实例化,从而构建出“对象(object);
  • 对象主要用于描述要在集群中运行的“应用程序(Pod)”,以及应用程序相关的控制(controllers)、配置(ConfigMap和Secret)、服务暴露(Service和Ingress)、存储(Volume)等;
  • 用户使用这些对象来规划、部署、配置、维护和监控应用程序并记录运行日志;
  • 每种类型的资源对象都支持相应的一组方法(管理操做),它们可用标准的HTTP Verb进行表示,例如:GET、PUT、DELETE和POST等。

命令补充

获取集群资源列表:
        kubectl  api-resources

    获取命名空间:
        kubectl  get ns

    建立deployment: 
        kubectl create deployment ngx-new --image=nginx

    查看service信息:
         kubectl describe svc ngx-new
    ...

备注

本文原址位于个人Github,我会陆续将全部专题更新过来,其中包括docker、k8s、ceph、istio和prometheus,旨在分享云原生中大而全的技术知识点和实操过程,若是对你有用,请follow、star个人github,这也是我更新、分享下去的动力,谢谢~bash