栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

k8s学习日志1 - Pod, RC, RS, Deployment, Update and Rollback, Service

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s学习日志1 - Pod, RC, RS, Deployment, Update and Rollback, Service

//显示节点信息
kubectl get nodes
//显示所有信息(看到pod, rs, deployment)
kubectl get all
//同时显示pod, service
kubectl get pods,svc

//创建pod
kubectl run [pod的名字] --image=[image的名字]
//创建pod的时候apply和create作用一样,用yaml创建pod
kubectl apply -f [yaml文件名]
或
kubectl create -f [yaml文件名]
//创建pod,并使用pod.yaml作为pod的定义文件
kubectl run [pod的名字] --image=[image的名字] --dry-run=client -o yaml > pod.yaml
kubectl apply -f pod.yaml
//删除pod
kubectl delete pod [pod的名字]
//编辑pod
kubectl edit pod [pod的名字]
//显示pod信息
kubectl get pods
//显示更多pod信息
kubectl get pods -o wide
//查看某个pod的具体信息
kubectl describe pod [pod的名字]

//用yaml创建rc/replicaset
kubectl apply -f [yaml文件名]
//查看rc
kubectl get replicationcontroller
//查看replicaset
kubectl get replicaset
//更改replicaset的yml文件后应用
kubectl replace -f [yaml文件名]
//scale replicas to 6
kubectl scale --replicas=6 -f [yaml文件名]
或
kubectl scale --replicas=6 replicaset [replicaset的名字] //这种方法不会改变yaml文件
kubectl scale --replicas=6 deployment [deployment的名字] //这种方法不会改变yaml文件
//查看某个rs的具体信息
kubectl describe replicaset [rs的名字]
//编辑rs
kubectl edit replicaset [rs的名字]
//删除replicaset,并把相关联的所有pod删除
kubectl delete replicaset [rs的名字]

//创建deployment
kubectl create -f [yaml文件名]
//显示deployments
kubectl get deployments
//把现有的deploment的yaml文件转出来
kubectl get deploment [deploment名] -o yaml > [想要的yaml文件名]

//创建service
kubectl create -f [yaml文件名]
//显示services
kubectl get services
或
kubectl get svc
//查看service的url
minikube service [service名] --url
//启动service
minikube service [service名]

一般情况一个pod对应一个container,如果需要scale up或scale down一般都是通过加减pod数量而不会去更改container,不过一个pod也可以有多个container,比如我们可能需要第二个container起到存放数据、支持的作用。

1. 用yaml创建Pod
KindVersion
Podv1
Servicev1
ReplicaSetapps/v1
Deploymentapps/v1

Pod的yaml文件:

apiVersion: v1
kind: Pod
metadata: 
  name: myapp-pod
  labels: 
    app: myapp
    type: front-end
spec:
  containers:
    - name: nginx-container
      image: nginx
2. 用yaml创建Replication Controller和Replica Set

RC的yaml文件:

apiVersion: v1
kind: ReplicationController
metadata: 
  name: myapp-rc
  labels: 
    app: myapp
    type: front-end
spec:
  //把pod的yaml写下来
  template: 
    metadata: 
      name: myapp-pod
      labels: 
        app: myapp
        type: front-end
    spec:
      containers:
        - name: nginx-container
          image: nginx
   replicas: 3

Replica Set的yaml文件:

apiVersion: apps/v1
kind: ReplicaSet
metadata: 
  name: myapp-replicaset
  labels: 
    app: myapp
    type: front-end
spec:
  //把pod的yaml写下来
  template: 
    metadata: 
      name: myapp-pod
      labels: 
        app: myapp
        type: front-end
    spec:
      containers:
        - name: nginx-container
          image: nginx
  replicas: 3
   //和rc最大的不同是有selector
  selector: 
3. 用yaml创建Deployment
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: myapp-deployment
  labels:
    tier: frontend 
    app: nginx
spec:
  template: 
    metadata: 
      name: nginx-2
      labels: 
        app: myapp
    spec:
      containers:
        - name: nginx
          image: nginx
  replicas: 3
  selector: 
    matchLabels:
      app: myapp
4. Update and Rollback
//create并record change
kubectl create -f [deployment的yaml文件名] --record
//update
kubectl apply -f [deployment的yaml文件名]
或
kubectl set image deployment/[deployment的名字] [container名]=[新image名]
//rollback
kubectl rollout undo deployment/[deployment的名字]
//查看rollout status
kubectl rollout status deployment/[deployment的名字]
kubectl rollout history deployment/[deployment的名字]

5. Service

Service Types: NodePort, ClusterIP, LoadBalancer
NodePort的yaml文件:

apiVersion: v1
kind: Service
metadata: 
  name: myapp-service
spec:
  type: NodePort
  ports:
    //只有port是必须的,如果不写targetPort默认就和port值一样,如果不写nodePort就会在30000-32767自动分配一个
    - targetPort: 80
      port: 80
      nodePort: 30008
  selector: 
	app: myapp
	type: front-end

ClusterIP的yaml文件:

apiVersion: v1
kind: Service
metadata: back-end
spec:
  //不写默认也是ClusterIP
  type: ClusterIP
  ports:
    - targetPort: 80
      port: 80
  selector: 
	app: myapp
	type: back-end

LoadBalancer的yaml文件(只对云平台如AWS有效):

apiVersion: v1
kind: Service
metadata: 
  name: myapp-service
spec:
  type: LoadBalancer
  ports:
    - targetPort: 80
      port: 80
6. 编辑pod
//方法1:
//编辑pod,在保存时会生成一个临时文件,则delete之前的pod,再用新生成的文件create一个新pod
kubectl edit pod [pod的名字]

//方法2:
kubectl get pod [pod名] -o yaml > [新yaml文件名]
//用vi [新yaml文件]来修改,然后delete之前的pod,再用新yaml文件create一个新pod
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/720984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号