//显示节点信息 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| Kind | Version |
|---|---|
| Pod | v1 |
| Service | v1 |
| ReplicaSet | apps/v1 |
| Deployment | apps/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



