kubectl命令行管理工具
kubeconfig配置文件
kube-apiserver两个端口:
-
localhost:8080 非安全端口,是kubectl默认先连接8080,如果你配置kubeconfig(.kube/config)就直接走这个配置连接的安全端口
-
masterip:6443 安全端口
命令行指定配置文件:
kubectl get node --kubeconfig=admin.conf |
拷贝认证文件到其他节点的(.kube/config)下:
scp .kube/config root@192.168.0.12:.kube/ |
kubectl使用kubeconfig认证文件连接K8s集群, 使用kubectl config指令生成kubeconfig文件。
kubectl管理命令概要
官方文档参考地址:https://kubernetes.io/zh/docs/reference/kubectl/overview/
牛刀小试,快速部署一个网站
使用Deployment控制器部署镜像:
kubectl create deployment web --image=lizhenliang/java-demo |
使用Service将Pod暴露出去:
kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort |
访问应用:
http://NodeIP:Port # 端口随机生成,通过get svc获取 |
基本资源概念
-
Pod:K8s最小部署单元,一组容器的集合
-
Deployment:最常见的控制器,用于更高级别部署和管理Pod
-
Service:为一组Pod提供负载均衡,对外提供统一访问入口
-
Label :标签,附加到某个资源上,用于关联对象、查询和筛选
-
Namespaces :命名空间,将对象逻辑上隔离,也利于权限控制
命名空间
命名空间(Namespace):Kubernetes将资源对象逻辑上隔离,从而形成多个虚拟集群。
应用场景:
-
根据不同团队划分命名空间
-
根据项目划分命名空间
kubectl get namespace
-
default:默认命名空间
-
kube-system:K8s系统方面的命名空间
-
kube-public:公开的命名空间,谁都可以访问,
-
kube-node-lease:K8s内部命名空间
两种方法指定资源命名空间:
-
命令行加 -n
-
yaml资源元数据里指定namespace字段
1、使用kubeadm搭建一个K8s集群
2、新建命名空间,在该命名空间中创建一个pod
kubectl create namespace azhe |
3、创建一个deployment并暴露Service,可以在浏览器访问
kubectl create deployment java-demo --image=lizhenliang/java-demo -n azhe |
4、列出命名空间下指定标签pod
kubectl get pod -n azhe --show-labels |
注:自由发挥,实现需求即可