k8s-basic-operation

什么是Pod

pod 是k8s的最小调度单位,一个pod中可以包含多个container,同一个pod中的container共享同一个网络名称空间(network namespace),即它们之间可以使用lo 通信。

kubectl 客户端工具

kubectl 是一个由官方提供的连接到master节点上api server 的客户端工具。以实现k8s各种资源(Pod、Service、deployment等等)的增删改查基本操作。

常用命令

kubectl cluster-info 查看整个集群的信息

kubectl get pods 列出所有pods

kubectl get pods -o wide 列出所有pods,并包含网络和节点信息

kubectl exec [Pod name] 在pod中执行一个shell命令(同docker exec类似)

kubectl exec -it [Pod name] sh 在pod中以交互模式运行shell(同docker exec类似),当Pod中有多个容器时,默认进入第一个容器。可以使用 -c 选项指定容器。

kubectl describe 显示组件的详细信息,例如显示pod的详细信息

1
kubectl describe pods nginx

kubectl run 创建并运行一个资源

1
kubectl run nginx-deploy --image=nginx:1.14-alpine --replicas=2

kubectl port-forward 将一个端口转发到k8s集群内的一个pod上

1
2
# 将本地8080端口转发到nginx pod的80端口,从而可以通过127.0.0.1:8080访问nginx
kubectl port-forward nginx 8080:80

kubectl expose 暴露一个可访问的service,可通过service名称+端口的方式访问内部pod。

1
kubectl expose deployment nginx-deploy --name=nginx-server --port=8080 --target-port=80

不指定service 的type 时,默认为ClusterIP , 该service 供集群 内部Pod 客户端 访问,在集群外部无法访问. 若需要外部访问,需要指定 --type=NodePort
NodePort Service 即微服务架构中的网关层,可以部署多个,用HA-Proxy 或F5 做负载均衡,以实现高可用。