Linux学习-kubernetes学习之kubectl命令

Posted 丢爸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习-kubernetes学习之kubectl命令相关的知识,希望对你有一定的参考价值。

kubernetes版本1.22.3

问题1:

Error from server: Get "https://192.168.88.103:10250/containerLogs/default/client/client": dial tcp 192.168.88.103:10250: connect: no route to host

解决方法

#经查看因为192.168.88.103上面firewalld服务处于开启状态,需关闭,并设置为开机不启动
[root@node2 ~]# systemctl stop firewalld
[root@node2 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
kubectl 命令
#查看节点的详细信息
[root@master bak]# kubectl describe node node1
Name:               node1
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=node1
                    kubernetes.io/os=linux
Annotations:        flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"72:c5:c4:bc:31:ff"}
                    flannel.alpha.coreos.com/backend-type: vxlan
                    flannel.alpha.coreos.com/kube-subnet-manager: true
                    flannel.alpha.coreos.com/public-ip: 192.168.88.102
                    kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Wed, 03 Nov 2021 10:45:38 -0400
Taints:             <none>
Unschedulable:      false
Lease:
  HolderIdentity:  node1
  AcquireTime:     <unset>
  RenewTime:       Wed, 03 Nov 2021 11:12:26 -0400
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Wed, 03 Nov 2021 10:45:46 -0400   Wed, 03 Nov 2021 10:45:46 -0400   FlannelIsUp                  Flannel is running on this node
  MemoryPressure       False   Wed, 03 Nov 2021 11:11:04 -0400   Wed, 03 Nov 2021 10:45:38 -0400   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Wed, 03 Nov 2021 11:11:04 -0400   Wed, 03 Nov 2021 10:45:38 -0400   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Wed, 03 Nov 2021 11:11:04 -0400   Wed, 03 Nov 2021 10:45:38 -0400   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Wed, 03 Nov 2021 11:11:04 -0400   Wed, 03 Nov 2021 10:45:48 -0400   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  192.168.88.102
  Hostname:    node1
Capacity:
  cpu:                4
  ephemeral-storage:  38815216Ki
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             7992344Ki
  pods:               110
Allocatable:
  cpu:                4
  ephemeral-storage:  35772103007
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             7889944Ki
  pods:               110
System Info:
  Machine ID:                 53c69389ae554f4f83ed809bd51dddca
  System UUID:                BF9C4D56-0FE6-5083-0565-16792C78EDF6
  Boot ID:                    d4fd0a95-b88f-42af-8822-696d59b63542
  Kernel Version:             3.10.0-862.el7.x86_64
  OS Image:                   CentOS Linux 7 (Core)
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  docker://20.10.10
  Kubelet Version:            v1.22.3
  Kube-Proxy Version:         v1.22.3
PodCIDR:                      192.168.2.0/24
PodCIDRs:                     192.168.2.0/24
Non-terminated Pods:          (2 in total)
  Namespace                   Name                     CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
  ---------                   ----                     ------------  ----------  ---------------  -------------  ---
  kube-system                 kube-flannel-ds-dfvsb    100m (2%)     100m (2%)   50Mi (0%)        50Mi (0%)      35m
  kube-system                 kube-proxy-gn9nj         0 (0%)        0 (0%)      0 (0%)           0 (0%)         35m
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests   Limits
  --------           --------   ------
  cpu                100m (2%)  100m (2%)
  memory             50Mi (0%)  50Mi (0%)
  ephemeral-storage  0 (0%)     0 (0%)
  hugepages-1Gi      0 (0%)     0 (0%)
  hugepages-2Mi      0 (0%)     0 (0%)
Events:
  Type    Reason                   Age                From        Message
  ----    ------                   ----               ----        -------
  Normal  Starting                 26m                kube-proxy  
  Normal  Starting                 34m                kube-proxy  
  Normal  NodeHasSufficientMemory  35m                kubelet     Node node1 status is now: NodeHasSufficientMemory
  Normal  NodeHasNoDiskPressure    35m                kubelet     Node node1 status is now: NodeHasNoDiskPressure
  Normal  NodeHasSufficientPID     35m                kubelet     Node node1 status is now: NodeHasSufficientPID
  Normal  NodeAllocatableEnforced  35m                kubelet     Updated Node Allocatable limit across pods
  Normal  Starting                 35m                kubelet     Starting kubelet.
  Normal  NodeReady                34m                kubelet     Node node1 status is now: NodeReady
  Normal  Starting                 26m                kubelet     Starting kubelet.
  Normal  NodeHasNoDiskPressure    26m (x2 over 26m)  kubelet     Node node1 status is now: NodeHasNoDiskPressure
  Normal  NodeHasSufficientPID     26m (x2 over 26m)  kubelet     Node node1 status is now: NodeHasSufficientPID
  Normal  NodeAllocatableEnforced  26m                kubelet     Updated Node Allocatable limit across pods
  Normal  NodeHasSufficientMemory  26m (x2 over 26m)  kubelet     Node node1 status is now: NodeHasSufficientMemory
  Normal  NodeReady                26m                kubelet     Node node1 status is now: NodeReady
#version查看kubectl版本信息
[root@master bak]# kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.3", GitCommit:"c92036820499fedefec0f847e2054d824aea6cd1", GitTreeState:"clean", BuildDate:"2021-10-27T18:41:28Z", GoVersion:"go1.16.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.3", GitCommit:"c92036820499fedefec0f847e2054d824aea6cd1", GitTreeState:"clean", BuildDate:"2021-10-27T18:35:25Z", GoVersion:"go1.16.9", Compiler:"gc", Platform:"linux/amd64"}
#cluster-info获得集群信息
[root@master bak]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.88.101:6443
CoreDNS is running at https://192.168.88.101:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
#部署nginx应用
#--dry-run程序并没有真正执行
[root@master ~]# kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --dry-run=true
W1103 11:25:31.051890  100284 helpers.go:569] --dry-run=true is deprecated (boolean value) and can be replaced with --dry-run=client.
pod/nginx-deploy created (dry run)
#创建deployment ,--replicas表示使用两个副本部署nginx
[root@master ~]# kubectl create deployment nginx-deploy --image=nginx:1.14-alpine --replicas=2
deployment.apps/nginx-deploy created
#通过service暴露资源
[root@master ~]# kubectl expose deployment nginx-deploy  --name=nginx --port=80 --target-port=80 --protocol=TCP
service/nginx exposed
#获取pod列表
[root@master ~]# kubectl get pods
NAME                            READY   STATUS    RESTARTS      AGE
nginx                           1/1     Running   1 (74m ago)   14h
nginx-deploy-7c948bcff4-jclqg   1/1     Running   0             26m
nginx-deploy-7c948bcff4-mczxp   1/1     Running   0             26m
#获取service列表,service创建后通过SELECTOR(标签选择器)关联至后端的Pod
[root@master ~]# kubectl get service -o wide
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE   SELECTOR
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   24h   <none>
nginx        ClusterIP   10.105.125.19   <none>        80/TCP    28m   app=nginx-deploy
#通过curl访问service的地址,可以查看nginx服务的页面
[root@master ~]# curl 10.105.125.19
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
#查看kube的服务dns
[root@master ~]# kubectl get service -n kube-system
NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   23h
#创建一个client deployment
[root@master ~]# kubectl create deployment client --image=busybox --replicas=1
deployment.apps/client created
#运行名为client的deployment
[root@master ~]# kubectl run client -it --image=busybox --restart=Never
If you don't see a command prompt, try pressing enter.
/ # cat /etc/resolv.conf
#DNS地址
nameserver 10.96.0.10
#kubernetes本地的Pod资源,default指的名称空间的名字,search表示搜索域
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
#在pod中可以直接解析service
/ # wget -O - -q nginx
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

#解析nginx的A记录的service地址
[root@master ~]# dig -t A nginx.default.svc.cluster.local @10.96.0.10 

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> -t A nginx.default.svc.cluster.local @10.96.0.10
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31486
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;nginx.default.svc.cluster.local. IN	A

;; ANSWER SECTION:
nginx.default.svc.cluster.local. 30 IN	A	10.105.125.19

;; Query time: 0 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: Sun Nov 07 09:54:21 EST 2021
;; MSG SIZE  rcvd: 107

[root@master ~]# kubectl get services -o wide
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE   SELECTOR
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   23h   <none>
nginx        ClusterIP   10.105.125.19   <none>        80/TCP    24m   app=nginx-deploy
#查看service的信息
[root@master ~]# kubectl describe service nginx
Name:              nginx
Namespace:         default
Labels:            app=nginx-deploy
Annotations:       <none>
#选择器
Selector:          app=nginx-deploy
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.105.125.19
IPs:               10.105.125.19
Port:              <unset>  80/TCP
TargetPort:        80/TCP
#对应的Pod的地址
Endpoints:         10.244.1.4:80,10.244.3.3:80
Session Affinity:  None
Events:            <none>
[root@master ~]# kubectl get pods --show-labels
NAME                            READY   STATUS             RESTARTS       AGE   LABELS
client                          1/1     Running            0              13m   run=client
client-7c75c79d7c-h9994         0/1     CrashLoopBackOff   8 (58s ago)    16m   app=client,pod-template-hash=7c75c79d7c
nginx                           1/1     Running            1 (103m ago)   14h   run=nginx
nginx-deploy-7c948bcff4-jclqg   1/1     Running            0              55m   app=nginx-deploy,pod-template-hash=7c948bcff4
nginx-deploy-7c948bcff4-mczxp   1/1     Running            0              55m   app=nginx-deploy,pod-template-hash=7c948bcff4
#动态扩展副本数量(增加/减少)
[root@master ~]# kubectl scale --replicas=3 deployment nginx-deploy
deployment.apps/nginx-deploy scaled
[root@master ~]# kubectl get pods
NAME                            READY   STATUS             RESTARTS       AGE
client                          1/1     Running            0              23m
client-7c75c79d7c-h9994         0/1     CrashLoopBackOff   10 (33s ago)   26m
nginx                           1/1     Running            1 (113m ago)   14h
nginx-deploy-7c948bcff4-jclqg   1/1     Running            0              65m
nginx-deploy-7c948bcff4-lhq2q   1/1     Running            0              7s
nginx-deploy-7c948bcff4-mczxp   1/1     Running            0              65m
[root@master ~]# kubectl scale --replicas=2 deployment nginx-deploy
deployment.apps/nginx-deploy scaled
[root@master ~]# kubectl get pods
NAME                            READY   STATUS             RESTARTS       AGE
client                          1/1     Running            0              24m
client-7c75c79d7c-h9994         0/1     CrashLoopBackOff   10 (84s ago)   27m
nginx                           1/1     Running            1 (114m ago)   14h
nginx-deploy-7c948bcff4-jclqg   1/1     Running            0              66m
nginx-deploy-7c948bcff4-mczxp   1/1     Running            0              66m
#修改service类型让其它机器可以访问Pod资源
[root@master ~]# kubectl edit service nginx
#修改  type: NodePort
[root@master ~]# kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        24h
nginx        NodePort    10.105.125.19   <none>        80:31526/TCP   49m

以上是关于Linux学习-kubernetes学习之kubectl命令的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes深入学习之二:编译和部署镜像(api-server)

容器学习之k8s入门1

Kubernetes 学习之入门篇

Kubernetes 学习之入门篇

Kubernetes学习二:Kubernetes集群搭建之部署kubernetes server

Linux学习之网络基本知识拓展学习