栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

k8skubectl使用与域名解析流程,基本yaml文件

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8skubectl使用与域名解析流程,基本yaml文件

基本kubectl命令

kubectl get svc -A    #查看所有的service,不推荐,类似于sql中select *
kubectl get pod -n default    #查询指定namespace下的pod,推荐写法
kubectl get deployment -n kube-system    #查看控制器
kubectl describe nodes    #查看容器运行信息
cpu 100m (5%)  100m (5%) #表示分出去了0.1核cpu,1000m=1核
#进入指定pod
kubectl exec -it pod名称 -n namespace -c 指定容器名 -- /bin/sh
#删除pod
kubectl delete pods/pod名称 namespace/namespace名称
#直接编辑资源
kubectl edit namespace名称    #有些不支持修改,比如名称
#创建pod
kubectl create -f yml文件 不能创建已有的,但apply可以允许执行多次还可以完成修改操作
#使用jq命令来查看json内容
yum install epel-release
yum install jq    #安装jq
kubectl get --raw /api/v1/namespaces/ | jq .kind
#查看节点信息
kubectl get nodes/k8s-node1 -o yaml/wide
#获取节点状态
kubectl get leases -n kube-node-lease    #传统的健康检查需要传递镜像信息极大占用了网络资源,节点租约在kube-node-lease里面,只需要#上传节点状态,kubelet每10s获取状态但不上报,只有超过默认5分钟或者发生变动才会上报
kubectl get leases/k8s-node1 -o yaml -n kube-node-lease

常用etcd命令

#查看etcd节点状态
export NODE_IPS="192.168.74.144 192.168.74.145 192.168.74.146"
for ip in ${NODE_IPS};do ETCDCTL_API=3 /usr/local/bin/etcdctl --write-out=table endpoint status --endpoints=https://${ip}:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem;done
#etcd节点查看
etcdctl member list
#检查心跳
etcdctl endpoint health
#获取etcd中所有数据
etcdctl get / --prefix --keys-only
#通过etcd删除pod
etcdctl get / --prefix --keys-only | grep nginx

/calico/resources/v3/projectcalico.org/workloadendpoints/linux66/kube--node--1-k8s-linux66--nginx--deployment--7d8d8dcdf4--6ql2j-eth0
/registry/deployments/linux66/linux66-nginx-deployment
/registry/endpointslices/linux66/linux66-nginx-service-xf62s
/registry/pods/linux66/linux66-nginx-deployment-7d8d8dcdf4-6ql2j
/registry/replicasets/linux66/linux66-nginx-deployment-7d8d8dcdf4
/registry/services/endpoints/linux66/linux66-nginx-service
/registry/services/specs/linux66/linux66-nginx-service
etcdctl del /registry/pods/linux66/linux66-nginx-deployment-7d8d8dcdf4-6ql2j

k8s域名解析流程
k8s里面有4种DNS策略, 而coredns使用的DNS策略就是Default, 这个策略的意思就是继承宿主机上的/etc/resolve.conf, 所以coredns Pod 里面的/etc/resolve.conf 的内容就是宿主机上的内容。
所以对于dnsPolicy 默认(也就是ClusterFirst)的情况下,Pod DNS的查询链路如下:

基本yaml格式

cat tomcat.yaml 
kind: Deployment    #指定类型 Deployment、Pod、Service等
#apiVersion: extensions/v1beta1
apiVersion: apps/v1    #指定类型版本,通过命令kubectl api-resources kubectl api-version查看版本,1.18版本前是extensions/v1beta1
metadata:    #pod的元数据信息,用来定义资源对象的属性信息
  labels:    #自定义pod的标签
    app: linux66-tomcat-app1-deployment-label    #标签名称为app值为linux36-nginx-deployment-label,用于后期筛选,给deployment用
  name: linux66-tomcat-app1-deployment    #pod名称,不能重复
  namespace: linux66    #所属namespace,默认defaults
spec:    #定义deployment中容器的详细信息
  replicas: 1    #副本数,默认1
  selector:    #用于筛选匹配的标签,key是app,值是linux66-tomcat-app1-selector,控制副本数,匹配不到副本数为1,匹配到两个会删除一个,保证副本数为1
    matchLabels:    #定义匹配的标签,必须要设置
      app: linux66-tomcat-app1-selector    #要匹配的标签
  template:    #定义模板,必须定义,模板是起到描述要创建的pod的作用
    metadata:
      labels:
        app: linux66-tomcat-app1-selector    #该模板创建的容器都会继承这个标签
    spec:
      containers:#定义pod中容器列表,可以多个至少一个,pod不能动态增减容器
      - name: linux66-tomcat-app1-container    #容器名称
        image: tomcat:7.0.94-alpine 
        #command: ["/apps/tomcat/bin/run_tomcat.sh"]
        #imagePullPolicy: IfNotPresent
        imagePullPolicy: Always    #拉取策略,IfNotPresent、Always、Never
        ports:#声明配置,不是最终决定
        - containerPort: 8080
          protocol: TCP    #TCP,UDP,SCTP
          name: http
        env:    #容器环境变量=虚拟机env,传递数据库密码,IP
        - name: "password"
          value: "123456"
        - name: "age"
          value: "18"
        resources:#定义资源限制,最多一核cpu和150m内存
          limits:
            cpu: 1
            memory: "150Mi"
          requests:
            cpu: 300m
            memory: "100Mi"
---
kind: Service#暴露容器中服务,给k8s以外的服务访问。kubectl get ep  -A如果有IP service能够匹配到容器
apiVersion: v1
metadata:
  labels:
    app: linux66-tomcat-app1-service-label
  name: linux66-tomcat-app1-service
  namespace: linux66    #与Pod在同一个service
spec:
  #type: NodePort    #NodePort,ClusterIP(默认),LoadBalancer,ExternalName
  ports:    #真正端口转发,不指定,在K8S集群端口范围内随机分配
  - name: http
    port: 80    #监听端口
    protocol: TCP
    targetPort: 8080  #容器服务端口  
    #nodePort: 40003    #宿主机端口,请求-nodePort-port-targetPort-服务
  selector:
    app: linux66-tomcat-app1-selector#将流量路到选择的pod上,须等于Deployment.spec.selector.matchLabels
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/830085.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号