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

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

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 KindVersionPodv1Servicev1ReplicaSetapps/v1Deploymentapps/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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5717297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存