美文网首页
2021-01-06-k8s-kubectl

2021-01-06-k8s-kubectl

作者: 洛杉矶银河 | 来源:发表于2021-01-06 21:16 被阅读0次

下载kubectl

kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。
到这里去下:
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.18.md

移动文件

1、把解压出来的kubectl移动到 /usr/local/bin 里面

或者任意 在“环境变量”中且你喜欢的目录

2、chmod +x kubectl (你懂的)

3、执行 kubectl version , 看到版本 就OK了

新建一个目录

1、目录:/home/app/kubectl

2、配置文件 名叫做config

3、然后编辑 ~/.bash_profile 把上述文件加入到环境变量中
KUBECONFIG=/home/app/kubectl/config

然后执行 source ~/.bash_profile

配置

首先 去rancher自带 kubectl 去执行

kubectl config view 看下配置

测试下
kubectl cluster-info

k8s架构图

k8s架构图

node

运行的主机。譬如物理机、云主机、甚至是我们的虚拟机

kubelet

负责master和节点(node)之间的通信、交互和数据上报 到master的apiserver

整体来讲 的职责是
1、Node管理

2、pod管理

3、容器健康检查

4、容器监控

5、资源清理

6、和容器运行时交互(docker 、rkt、Virtlet等等)

kube-proxy

外部通过NodePort、ClusterIP等方式访问服务。

kube-proxy 运行在每个Node 上,负责Pod网络代理, 维护网络规则和四层负载均衡工作

kube-controller-manager

在master中。
kube-controller-manager负责节点管理、pod复制和endpoint创建.
监控集群中各种资源的状态使之和定义的状态保持一致,.

如:
节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。

副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正
确数量的 Pod。(现在是Deployment Controller+Replication Set)

10250端口

一般情况下kubectl会暴露 10250端口 用于和apiserver 交互
常用的查询API ( 看看就好)

GET
/pods

/stats/summary

/metrics

/healthz

访问方式

docker exec -it kubelet curl -k https://localhost:10250/healthz --header "Authorization: Bearer kubeconfig-user-mtxnk.c-gfv2c:h86t2zzpjcq8lksd82l24l6ld7pkdwsh4264thvbfxldntkmdmf2c8"

获取pod

kubectl get pods -n myweb

创建deployment,service

kubectl create -f nginx.yaml -f nginxsvc.yaml

修改deployment,service

kubectl apply -f nginx.yaml -f nginxsvc.yaml

查看deployment

kubectl get deployment  -n myweb

删除deployment

kubectl delete deployment myngx -n myweb

查看service

kubectl get svc  -n myweb

删除service

kubectl delete svc myngx-service  -n myweb

nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myngx
  namespace: myweb
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginxtest
          image: nginx:1.18-alpine
          # 只有镜像不存在时进行镜像拉取
          imagePullPolicy: IfNotPresent
          ports:
            # Pod 端口
            - containerPort: 8081

nginxsvc.yaml

kind: Service
metadata:
  name: myngx-service
  namespace: myweb
spec:
  selector:
    app: nginx   #这个和前面的app也是对应
  ports:
    - protocol: TCP
      port: 8082
      targetPort: 80
  type: ClusterIP

主机调度:nodeName和nodeSelector

最简单的方式

nodename


nodename

第二种方式

根据标签

kubectl get node --show-labels

添加标签:

kubectl label nodes <node-name> <label-key>=<label-value>

kubectl label nodes zhuji1 name=a1

kubectl label nodes zhuji2 name=a2

删除标签

kubectl label nodes <node-name> <label-key>-

kubectl label nodes dsjs  name-

修改标签:

kubectl label nodes <node-name> <label-key>=<label-value> --overwrite

配置改一下

 spec:
      nodeSelector:
        name: a2

数据卷:挂载本地文件

之前写了一个 go 的 web服务 (使用的是gin框架写的)
在/home/app/myweb 下有个 myserver这个可执行程序

接下来我们编写deployment文件

要点1

volumeMounts:
        - name: v1
          mountPath: /app

定义在容器里

要点2

volumes:
        - name: v1   
          hostPath:
            path: /home/shenyi/myweb

 volumes和container同级

创建deployment

kubectl create -f mygin.yaml 

mygin.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mygin
  namespace: myweb
spec:
  selector:
    matchLabels:
      app: mygin
  replicas: 1
  template:
    metadata:
      labels:
        app: mygin
    spec:
      nodeSelector:
        name: a1
      containers:
        - name: ginweb
          image: alpine:3.12
          imagePullPolicy: IfNotPresent
          command: [ "/app/myserver" ]
          ports:
            - containerPort: 80
          volumeMounts:
            - name: v1
              mountPath: /app
      volumes:
        - name: v1  #挂载宿主机上面的目录
          hostPath:
            path: /home/app/myweb

相关文章

  • 2021-01-06-k8s-kubectl

    下载kubectl kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理...

网友评论

      本文标题:2021-01-06-k8s-kubectl

      本文链接:https://www.haomeiwen.com/subject/ksiooktx.html