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资源

注:自由发挥,实现需求即可