k8s学习笔记-资源清单定义入门

RESTful
GET PUT DELETE POST,....
kubectl run,get,edit,....
资源:对象
workload: Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob,...
服务发现及均衡:service,Ingress,....
配置与存储:Volume,CSI
ConfigMap,secret
DownwardAPI
集群级资源
Namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBingding
元数据型资源
HPA,PodTemplate,LimitRange..
创建资源的方法:
apiserver只接收json格式的资源定义;
yaml格式提供配置清单,apiserver可自动将其转为json格式,然后在提交;
查看pod yaml 配置清单
[root@k8s-master ~]# kubectl get pod myapp-9b4987d5-244dl -o yaml
大部分资源配置清单:
apiversion group/version
[root@k8s-master ~]#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
kind : 资源类别
metadata:元数据
name
namespace
labels
annotations 注解
每个资源的引用PATH 小写的是固定的格式
/api/GROUP/version/namespace/Namespache/TYPE/NAME
spec: 期望的状态,disired State
status: 当前状态,current state,本字段由k8s集群维护
参考定义说明: 如果是对象,可以一直按下面规则一级一级访问
kubectl explain pods
kubectl explain pods.metadata
kubectl explain pods.spec.containers

vim pod-demo.yaml

apiVersion:  v1
kind:  Pod
metadata:
   name:  pod-demo
   namespace:  default
labels:
    app:  myapp
    tier:  frontend
spec:
   containers:
   -  name:  myapp
      image:  ikubernetes/myapp:v1
   -  name:  busybox
      image:  busybox:latest
     command:
     -  "/bin/sh"
     -  "-c"
     -  "echo test-page >> /usr/share/nginx/html/index.html "

注意列表的写法:一般用第二种 

第一种

command: ["/bin/sh","-c","sleep 3】

第二种,还用- 来指

command

-  "/bin/sh"

-  "sleep 3600"

[root@k8s-master k8s]# kubectl create -f pod-demo.yaml
pod/pod-demo created
kubectl get pods pod-demo
NAME                                          READY       STATUS       RESTARTS           AGE         
pod-demo                                      2/2           Running                2                    34s            
kubectl describe pods pod-demo 查看详细的信息                
[root@k8s-master k8s]# curl 10.244.1.154
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@k8s-master k8s]# kubectl logs pod-demo myapp
10.244.0.0 - - [22/Apr/2019:11:22:21 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-"
[root@k8s-master k8s]# kubectl exec -it pod-demo -c myapp -- /bin/sh
/ # cat /usr/share/nginx/html/index.html
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@k8s-master k8s]# kubectl logs pod-demo busybox
/bin/sh: can't create /usr/share/nginx/html/index.html: nonexistent directory
[root@k8s-master k8s]# kubectl get pods pod-demo

NAME                                          READY       STATUS                                RESTARTS           AGE
pod-demo                                       1/2          CrashLoopBackOff                      6                       8m1s
上面测试会有问题的,因为他们没有共享存储卷,等学习了以后在测试,以上的测试是为排查错误
修改一下
vim pod-demo.yaml
apiVersion:  v1
kind:  Pod
metadata:
    name:  pod-demo
    namespace:  default
    labels:
      app:  myapp
      tier:  frontend
spec:
   containers:
  -  name:  myapp
     image:  ikubernetes/myapp:v1
 - name:   busybox
  image:  busybox:latest
  command:
  -  "/bin/sh"
  -  "-c"
  -  "sleep 3600"
[root@k8s-master k8s]# kubectl delete -f pod-demo.yaml
pod "pod-demo" deleted
[root@k8s-master k8s]# kubectl create -f pod-demo.yaml
pod/pod-demo created
[root@k8s-master k8s]# kubectl get pods -o wide

pod-demo 2/2 Running 0 32s 10.244.2.21 k8s-node1 <none> <none>
[root@k8s-master k8s]# curl 10.244.2.21
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@k8s-master k8s]# kubectl logs pod-demo myapp
10.244.0.0 - - [22/Apr/2019:11:33:36 +0000] "GET / HTTP/1.1" 200 65 "-" "curl/7.29.0" "-"

 

 一个简单的应用实例: mysql+tomcat web 站点

vim mysql-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
   name: mysql
spec:
  replicas: 1
  selector:
      app: mysql
  template:
     metadata:
        labels:
          app: mysql
       spec:
          containers:
         - name: mysql
           image: mysql:5.5.62 注意不要安装最新版本8.0,要不下面的myweb 会报错,因为版本太老,不兼容
           ports:
          - containerPort: 3306
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: "123456"
vim mysql-svc.yaml

apiVersion:  v1
kind:  Service
metadata:
name:  mysql
spec:
ports:
- port:  3306
selector:
app:  mysql
vim myweb-rc.yaml
apiVersion:  v1
kind:  ReplicationController
metadata:
   name:  myweb
spec:
   replicas:  3
   selector:
       app:  myweb
   template:
      metadata:
         labels:
             app:   myweb
      spec:
        containers:
        -  name: myweb
          image: kubeguide/tomcat-app:v1
          ports:
         -  containerPort: 8080
         env:
         -  name: MYSQL_SERVICE_HOST
            value: 'mysql'
         -  name: MYSQL_SERVICE_PORT
            value: '3306'
vim myapp-svc.yaml

apiVersion: v1
kind: Service
metadata:
    name: myweb
spec:
    type: NodePort
    ports:
    - port: 8080
      nodePort: 30001
   selector:
      app: myweb

 

 

 上面的也可以定义Deployment 的资源

 

apiVersion:  apps/v1
kind:  Deployment
metadata:
  name:  myweb
  spec:
     replicas:  3
     selector:
        matchLabels:
          app:  myweb
  template:
     metadata:
       labels:
         app:  myweb
     spec:
       containers:
        -  name:   myweb
           image:  kubeguide/tomcat-app:v1
     ports:
     -  containerPort: 8080
     env:
     -  name:  MYSQL_SERVICE_HOST
        value:  'mysql'
    -  name: MYSQL_SERVICE_PORT
       value:  '3306'

 

 

 kubectl create -f mysql-rc.yaml

 kubectl create -f mysql-svc.yaml

 kubectl create -f myweb-rc.yaml

 kubectl create -f myweb-svc.yaml

[root@k8s-master k8s]# kubectl get pods
NAME                 READY           STATUS                          RESTARTS                   AGE
mysql-7z4jg         1/1                  Running                                0                              22m
myweb-hqk9w     1/1                  Running                                0                              66m
myweb-mx42c     1/1                  Running                                0                              66m
myweb-qx4qd      1/1                  Running                                0                              6

[root@k8s-master k8s]# kubectl get svc
NAME                         TYPE                     CLUSTER-IP                    EXTERNAL-IP          PORT(S)                    AGE
kubernetes                ClusterIP                    10.96.0.1                           <none>                   443/TCP                   38d
mysql                       ClusterIP                     10.106.94.52                     <none>                   3306/TCP                  23m
myweb                     NodePort                    10.102.186.62                   <none>                   8080:30001/TCP       64m

[root@k8s-master k8s]# kubectl get rc
NAME                            DESIRED                        CURRENT R                    EADY                        AGE
mysql                                  1                                         1                                  1                               23m
myweb                                3                                          3                                 3                               66m

 

 

 

 

 

 




 

转载于:https://www.cnblogs.com/centos-python/articles/10754770.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值