kubectl命令行管理工具
605字约2分钟
2024-09-29
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
kubectl get deploy,pods
使用Service将Pod暴露出去:
kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort
kubectl get service
访问应用:
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
kubectl expose deployment java-demo --port 80 --target-port=8080 --type=NodePort -n azhe
4、列出命名空间下指定标签pod
kubectl get pod -n azhe --show-labels
kubectl get pod -l app=java-demo -n azhe
kubectl get pod,svc,deploy -o wide -n azhe #查看azhe命名空间下的pod,svc,deploy资源
注:自由发挥,实现需求即可