知乎专栏 |
docker run 命令
$ docker run -d --restart=always -e DOMAIN=cluster --name nginx -p 80:80 nginx
kubectl 命令
$ kubectl run --image=nginx nginx-app --port=80 --env="DOMAIN=cluster" $ kubectl expose deployment nginx-app --port=80 --name=nginx-http
docker exec 命令
$ docker run -t -i ubuntu:14.10 /bin/bash
kubectl 命令
$ kubectl exec -ti nginx-app-5jyvm -- /bin/sh
docker ps 命令
$ docker ps
kubectl 命令
$ kubectl get pods NAME READY STATUS RESTARTS AGE mongodba-6d5d6ddf64-jw4fv 1/1 Running 0 16h # kubectl exec -it mongodba-6d5d6ddf64-jw4fv bash
进入容器内部.
$ kubectl get pods NAME READY STATUS RESTARTS AGE mongodba-6d5d6ddf64-jw4fv 1/1 Running 0 16h $ kubectl exec -it mongodba-6d5d6ddf64-jw4fv bash
kubectl run busybox --image=busybox:latest iMac:kubernetes neo$ kubectl exec -it busybox -- nslookup www.netkiller.cn Server: 10.10.0.10 Address: 10.10.0.10:53 Non-authoritative answer: www.netkiller.cn canonical name = netkiller.github.io Name: netkiller.github.io Address: 185.199.110.153 Name: netkiller.github.io Address: 185.199.108.153 Name: netkiller.github.io Address: 185.199.111.153 Name: netkiller.github.io Address: 185.199.109.153 *** Can't find www.netkiller.cn: No answer
iMac:springboot neo$ kubectl api-versions admissionregistration.k8s.io/v1 admissionregistration.k8s.io/v1beta1 apiextensions.k8s.io/v1 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1 apiregistration.k8s.io/v1beta1 apps/v1 authentication.k8s.io/v1 authentication.k8s.io/v1beta1 authorization.k8s.io/v1 authorization.k8s.io/v1beta1 autoscaling/v1 autoscaling/v2beta1 autoscaling/v2beta2 batch/v1 batch/v1beta1 certificates.k8s.io/v1 certificates.k8s.io/v1beta1 coordination.k8s.io/v1 coordination.k8s.io/v1beta1 discovery.k8s.io/v1beta1 events.k8s.io/v1 events.k8s.io/v1beta1 extensions/v1beta1 networking.k8s.io/v1 networking.k8s.io/v1beta1 node.k8s.io/v1beta1 policy/v1beta1 rbac.authorization.k8s.io/v1 rbac.authorization.k8s.io/v1beta1 scheduling.k8s.io/v1 scheduling.k8s.io/v1beta1 storage.k8s.io/v1 storage.k8s.io/v1beta1 v1
[root@localhost ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready master 23m v1.13.2
[root@localhost ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready master 119m v1.13.2
iMac:~ neo$ kubectl get node NAME STATUS ROLES AGE VERSION minikube Ready master 42h v1.19.0 iMac:~ neo$ kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME minikube Ready master 42h v1.19.0 192.168.64.2 <none> Buildroot 2019.02.11 4.19.114 docker://19.3.12
[root@localhost ~]# kubectl get cs NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health": "true"}
[root@localhost ~]# kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority: /root/.minikube/ca.crt server: https://172.16.0.121:8443 name: minikube contexts: - context: cluster: minikube user: minikube name: minikube current-context: minikube kind: Config preferences: {} users: - name: minikube user: client-certificate: /root/.minikube/client.crt client-key: /root/.minikube/client.key
iMac:~ neo$ kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kubernetes.docker.internal:6443 name: docker-desktop - cluster: certificate-authority: /Users/neo/.minikube/ca.crt server: https://192.168.64.2:8443 name: minikube contexts: - context: cluster: docker-desktop user: docker-desktop name: docker-desktop - context: cluster: minikube user: minikube name: minikube current-context: minikube kind: Config preferences: {} users: - name: docker-desktop user: client-certificate-data: REDACTED client-key-data: REDACTED - name: minikube user: client-certificate: /Users/neo/.minikube/profiles/minikube/client.crt client-key: /Users/neo/.minikube/profiles/minikube/client.key
kubectl logs <pod-name> kubectl logs --previous <pod-name> kubectl logs -l app=your-app-name | grep "xxx" kubectl logs --selector role=cool-app | grep "xxx"
kubectl cp netkiller/job-executor-77fc6b4db-5dzxz:logs/info.2022-07-29.log Downloads/info.2022-07-29.log -c job-executor
kubectl cp Downloads/myfile netkiller/job-executor-77fc6b4db-5dzxz:/tmp/myfile -c job-executor
Neo-iMac:kubernetes neo$ rancher kubectl get endpoints nginx NAME ENDPOINTS AGE nginx 10.42.0.19:80,10.42.0.20:80,10.42.0.21:80 3m56s
iMac:kubernetes neo$ kubectl explain ingress KIND: Ingress VERSION: extensions/v1beta1 DESCRIPTION: Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. DEPRECATED - This group version of Ingress is deprecated by networking.k8s.io/v1beta1 Ingress. See the release notes for more information. FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources kind <string> Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds metadata <Object> Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata spec <Object> Spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status status <Object> Status is the current state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
查看 ingress.spec 配置清单
iMac:kubernetes neo$ kubectl explain ingress.spec KIND: Ingress VERSION: extensions/v1beta1 RESOURCE: spec <Object> DESCRIPTION: Spec is the desired state of the Ingress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status IngressSpec describes the Ingress the user wishes to exist. FIELDS: backend <Object> A default backend capable of servicing requests that don't match any rule. At least one of 'backend' or 'rules' must be specified. This field is optional to allow the loadbalancer controller or defaulting logic to specify a global default. ingressClassName <string> IngressClassName is the name of the IngressClass cluster resource. The associated IngressClass defines which controller will implement the resource. This replaces the deprecated `kubernetes.io/ingress.class` annotation. For backwards compatibility, when that annotation is set, it must be given precedence over this field. The controller may emit a warning if the field and annotation have different values. Implementations of this API should ignore Ingresses without a class specified. An IngressClass resource may be marked as default, which can be used to set a default value for this field. For more information, refer to the IngressClass documentation. rules <[]Object> A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend. tls <[]Object> TLS configuration. Currently the Ingress only supports a single TLS port, 443. If multiple members of this list specify different hosts, they will be multiplexed on the same port according to the hostname specified through the SNI TLS extension, if the ingress controller fulfilling the ingress supports SNI.
[root@master ~]# kubectl describe storageclasses.storage.k8s.io Name: longhorn-storage IsDefaultClass: No Annotations: <none> Provisioner: driver.longhorn.io Parameters: diskSelector=hdd,numberOfReplicas=2,staleReplicaTimeout=2880 AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: Immediate Events: <none> Name: longhorn IsDefaultClass: No Annotations: longhorn.io/last-applied-configmap=kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: longhorn annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: driver.longhorn.io allowVolumeExpansion: true reclaimPolicy: "Delete" volumeBindingMode: Immediate parameters: numberOfReplicas: "3" staleReplicaTimeout: "30" fromBackup: "" fsType: "ext4" dataLocality: "disabled" ,storageclass.beta.kubernetes.io/is-default-class=false,storageclass.kubernetes.io/is-default-class=false Provisioner: driver.longhorn.io Parameters: dataLocality=disabled,fromBackup=,fsType=ext4,numberOfReplicas=3,staleReplicaTimeout=30 AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: Immediate Events: <none> Name: local-path IsDefaultClass: Yes Annotations: objectset.rio.cattle.io/applied=H4sIAAAAAAAA/4yRT+vUMBCGv4rMua1bu1tKwIOu7EUEQdDzNJlux6aZkkwry7LfXbIqrIffn2PyZN7hfXIFXPg7xcQSwEBSiXimaupSxfJ2q6GAiYMDA9/+oKPHlKCAmRQdKoK5AoYgisoSUj5K/5OsJtIqslQWVT3lNM4xUDzJ5VegWJ63CQxMTXogW128+czBvf/gnIQXIwLOBAa8WPTl30qvGkoL2jw5rT2V6ZKUZij+SbG5eZVRDKR0F8SpdDTg6rW8YzCgcSW4FeCxJ/+sjxHTCAbqrhmag20Pw9DbZtfu210z7JuhPnQ719m2w3cOe7fPof81W1DHfLlE2Th/IEUwEDHYkWJe8PCsgJgL8PxVPNsLGPhEnjRr2cSvM33k4Dicv4jLC34g60niiWPSo4S0zhTh9jsAAP//ytgh5S0CAAA,objectset.rio.cattle.io/id=,objectset.rio.cattle.io/owner-gvk=k3s.cattle.io/v1, Kind=Addon,objectset.rio.cattle.io/owner-name=local-storage,objectset.rio.cattle.io/owner-namespace=kube-system,storageclass.beta.kubernetes.io/is-default-class=true,storageclass.kubernetes.io/is-default-class=true Provisioner: rancher.io/local-path Parameters: <none> AllowVolumeExpansion: <unset> MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
[root@master ~]# kubectl describe pvc Name: elasticsearch-elasticsearch-data-0 Namespace: default StorageClass: local-path Status: Bound Volume: pvc-a2ebce5a-9ae1-46e9-ae9f-8840027bf5d8 Labels: app=elasticsearch role=data Annotations: pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path volume.kubernetes.io/selected-node: agent-1 volume.kubernetes.io/storage-provisioner: rancher.io/local-path Finalizers: [kubernetes.io/pvc-protection] Capacity: 1Gi Access Modes: RWO VolumeMode: Filesystem Used By: elasticsearch-data-0 Events: <none> Name: elasticsearch-elasticsearch-data-1 Namespace: default StorageClass: local-path Status: Bound Volume: pvc-f0d9d5df-9704-44a7-93ff-8a4f431af226 Labels: app=elasticsearch role=data Annotations: pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path volume.kubernetes.io/selected-node: master volume.kubernetes.io/storage-provisioner: rancher.io/local-path Finalizers: [kubernetes.io/pvc-protection] Capacity: 1Gi Access Modes: RWO VolumeMode: Filesystem Used By: elasticsearch-data-1 Events: <none> Name: elasticsearch-elasticsearch-data-2 Namespace: default StorageClass: local-path Status: Bound Volume: pvc-722cce94-b2c5-457a-8e01-9a2a52b12128 Labels: app=elasticsearch role=data Annotations: pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path volume.kubernetes.io/selected-node: agent-1 volume.kubernetes.io/storage-provisioner: rancher.io/local-path Finalizers: [kubernetes.io/pvc-protection] Capacity: 1Gi Access Modes: RWO VolumeMode: Filesystem Used By: elasticsearch-data-2 Events: <none> Name: longhorn-volv-pvc Namespace: default StorageClass: longhorn Status: Bound Volume: pvc-5dc3ae33-9f86-4650-82ba-a7b681963adc Labels: <none> Annotations: pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.beta.kubernetes.io/storage-provisioner: driver.longhorn.io volume.kubernetes.io/storage-provisioner: driver.longhorn.io Finalizers: [kubernetes.io/pvc-protection] Capacity: 2Gi Access Modes: RWO VolumeMode: Filesystem Used By: volume-test Events: <none> Name: redis Namespace: default StorageClass: local-path Status: Pending Volume: Labels: <none> Annotations: <none> Finalizers: [kubernetes.io/pvc-protection] Capacity: Access Modes: VolumeMode: Filesystem Used By: redis-0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal WaitForFirstConsumer 29s (x481 over 120m) persistentvolume-controller waiting for first consumer to be created before binding [root@master ~]#