【云原生】k8s集群命令行工具kubectl基础操作命令实践详解

您所在的位置:网站首页 pdb命令大全 【云原生】k8s集群命令行工具kubectl基础操作命令实践详解

【云原生】k8s集群命令行工具kubectl基础操作命令实践详解

#【云原生】k8s集群命令行工具kubectl基础操作命令实践详解| 来源: 网络整理| 查看: 265

kubectl基础操作命令详解 一、准备工作1.1、Replication Controller1.2、Deployment1.3、DaemonSet1.4、查看创建的svc和pod1.5、kubectl 命令自动补全设置 二、kubectl语法三、基础操作命令3.1、api-resources3.2、api-versions3.3、create3.4、expose3.5、run3.6、set3.6.1、env3.6.2、image3.6.3、resources3.6.4、selector 3.7、explain(重点)3.8、get3.9、edit3.10、delete3.11、label3.12、annotate 总结

一、准备工作

Kubernetes提供的集群控制平面(master节点)与Kubernetes APIServer通信的命令行工具——kubectl。kubectl默认配置文件目录$HOME/.kube/config。可以通过 --kubeconfig 参数来指定kubectl的配置文件。

以下操作如果已经做过了,就可以跳过。

1.1、Replication Controller

(1)创建myhello-rc.yaml并写入如下内容:

vim myhello-rc.yaml

内容:

apiVersion: v1 kind: ReplicationController # 副本控制器 RC metadata: namespace: default name: myhello-rc # RC名称,全局唯一 labels: name: myhello-rc spec: replicas: 5 # Pod副本期待数量 selector: name: myhello-rc-pod template: # pod的定义模板 metadata: labels: name: myhello-rc-pod spec: containers: # Pod 内容的定义部分 - name: myhello #容器的名称 image: nongtengfei/hello:1.0.0 #容器对应的 Docker Image imagePullPolicy: IfNotPresent ports: - containerPort: 80 env: # 注入到容器的环境变量 - name: env1 value: "k8s-env1" - name: env2 value: "k8s-env2"

通常不会去单独的配置pod,都是通过某一类副本控制器资源去部署pod。原因:如果单独配置pod,当集群升级时需要将当前节点上的所有pod排空,那么会产生问题,因为pod没有任何副本控制器在控制它,集群对他没有预期,当节点排空后,pod将不会被调度和重生。

(2)为RC创建service。

vim myhello-svc.yaml

内容:

apiVersion: v1 kind: Service metadata: name: myhello-svc labels: name: myhello-svc spec: type: NodePort # 对外提供端口 ports: - port: 80 protocol: TCP targetPort: 80 name: http nodePort: 30000 selector: name: myhello-rc-pod

(3)应用配置。

kubectl apply -f myhello-svc.yaml -f myhello-rc.yaml 1.2、Deployment

(1)创建myapp-deployment.yaml并写入如下内容:

vim myapp-deployment.yaml

内容:

apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deployment labels: name: myapp-deploy spec: replicas: 5 selector: matchLabels: name: myapp-deploy-pod template: metadata: labels: name: myapp-deploy-pod spec: #nodeSelector: #nodetype: worker containers: # Pod 内容的定义部分 - name: myhello #容器的名称 image: nongtengfei/hello:1.0.0 #容器对应的 Docker Image imagePullPolicy: IfNotPresent ports: - containerPort: 80 env: # 注入到容器的环境变量 - name: env1 value: "k8s-env1" - name: env2 value: "k8s-env2" resources: requests: cpu: 100m - name: myredis #容器的名称 image: redis #容器对应的 Docker Image imagePullPolicy: IfNotPresent ports: - containerPort: 6379 env: # 注入到容器的环境变量 - name: env1 value: "k8s-env1" - name: env2 value: "k8s-env2" resources: requests: cpu: 100m

(2)为deployment创建service。

vim myapp-svc.yaml

内容:

apiVersion: v1 kind: Service metadata: name: myapp-svc labels: name: myapp-svc spec: type: NodePort # 对外提供端口 ports: - port: 80 protocol: TCP targetPort: 80 name: http nodePort: 30001 selector: name: myapp-deploy-pod

(3)应用配置。

kubectl apply -f myapp-svc.yaml -f myapp-deployment.yaml 1.3、DaemonSet

(1)创建myapp-deployment.yaml并写入如下内容:

vim myapp-ds.yaml

内容:

apiVersion: apps/v1 kind: DaemonSet metadata: name: myapp-ds namespace: default labels: app: myapp-ds spec: selector: matchLabels: app: myapp-ds template: metadata: labels: app: myapp-ds spec: tolerations: - key: node-role.kubernetes.io/control-plane operator: Exists effect: NoSchedule containers: # Pod 内容的定义部分 - name: myhello #容器的名称 image: nongtengfei/hello:1.0.0 #容器对应的 Docker Image imagePullPolicy: IfNotPresent ports: - containerPort: 80 env: # 注入到容器的环境变量 - name: env1 value: "k8s-env1" - name: env2 value: "k8s-env2"

(2)为DaemonSet创建service。

vim myapp-ds-svc.yaml

内容:

apiVersion: v1 kind: Service metadata: name: myapp-ds-svc labels: name: myapp-ds-svc spec: type: NodePort # 对外提供端口 ports: - port: 8080 protocol: TCP targetPort: 80 name: http nodePort: 30002 selector: app: myapp-ds

(3)应用配置:

kubectl apply -f myapp-ds-svc.yaml -f myapp-ds.yaml 1.4、查看创建的svc和pod $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 443/TCP 45h myapp-ds-svc NodePort 10.96.41.180 8080:30002/TCP 4m3s myapp-svc NodePort 10.98.20.127 80:30001/TCP 6m32s myhello-svc NodePort 10.106.252.61 80:30000/TCP 14m $ kubectl get pod NAME READY STATUS RESTARTS AGE myapp-deployment-5659dbddd8-l6m87 0/2 Pending 0 6m41s myapp-deployment-5659dbddd8-lxxls 0/2 Pending 0 6m41s myapp-deployment-5659dbddd8-pqqlx 0/2 Pending 0 6m41s myapp-deployment-5659dbddd8-xb8xp 0/2 Pending 0 6m41s myapp-deployment-5659dbddd8-zjgsx 0/2 Pending 0 6m41s myapp-ds-2zqf9 1/1 Running 0 2m43s myhello-rc-2tjmr 0/1 Pending 0 12m myhello-rc-44ksd 0/1 Pending 0 12m myhello-rc-86g79 0/1 Pending 0 12m myhello-rc-df225 0/1 Pending 0 12m myhello-rc-lfbzb 0/1 Pending 0 12m

这里只建立了一个节点,所有只有一个pod。

1.5、kubectl 命令自动补全设置 # 安装自动补全插件 sudo apt-get install -y bash-completion # 添加.bashrc文件内容 echo "source


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3