pod的理解
①pod是一组并置的容器,是k8s的基本模块;
②容器只运行一个进程(包括子进程),而在包含容器的pod内,可以同时运行一些密切相关的进程;
③容器之间完全隔离,但pod内的容器共享相同的linux命名空间,共享相同的主机名、IP地址和端口空间,均工作在相同的IPC命名空间下,容器间可以通过IPC进行通信;
④pod和k8s资源都是通过向k8s的REST API提供json或者yaml文件来创建的。
基本命令
kubectl gkubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1et pods
kubectl get pods
创建一个服务,使得pod能被外界访问,通过服务对象公开它,LoadBalancer类型的服务,ClusterIP只能从集群内部访问
kubectl expose rc kubia --type=LoadBalancer --name kubia-http
kubectl get services
增加pod数量
kubectl scale rc kubia --replicas=30
k8s允许配置本地端口转发到指定pod的端口上,可用于测试特定的pod
kubectl port-forward kubia-manual 8888:8080
删除pod
kubectl delete -n default pod kubia-5nm8w
删除rc
kubectl delete -n default replicationcontroller kubia
删除服务
kubectl delete -n default service kubia-http
删除命名空间所有资源
kubectl delete all --all
pod的创建
apiVersion: v1
kind: Pod
metadata:
name: kubia-manual
spec:
containers:
- image: luksa/kubia
name: kubia
ports:
- containerPort: 8080
protocol: TCP
创建指令
kubectl create -f xxx.yaml
kubectl get pods #查看pod
设置pod标签
kubectl label pod <pod name> <new tag> #设置标签
kubectl label pod <pod name> <new tag> --overwrite #覆盖
kubectl get pod -L xxx,xxxx #以标签的形式查看pod
kubectl get pod -l env=debug # 使用标签选择器查看pod
kubectl delete pod -l xx=xx #按标签删除pod
命名空间
命名空间为资源提供了一个隔离的作用域,以及限制资源的使用
命令行创建命名空间
kubectl create namespace <name>
脚本创建
kubectl create -f xxx.yaml
apiVersion: v1
kind: Namespace
metadata:
name: <name>
pod的健康管理-存活探针
创建带存活探针的pod
apiVersion: v1
kind: Pod
metadata:
name: kubia-liveness
spec:
containers:
- image: luksa/kubia-unhealthy
name: kubia
livenessProbe:
httpGet:
path: /
port: 8080
存活探针的设计应该保持轻量的原则,不应该消耗太多的计算资源