管理K8S核心资源

管理K8S核心资源的三种基本方法:

  • 陈述式管理方法–主要依赖命令行CLI工具进行管理
  • 声明式管理方法–主要依赖统一资源配置清单( manifest)进行管理
  • GUI式管理方法一主要依赖图形化操作界面(web页面)进行管理
image.png
~]# kubectl get namespace/ns
NAME              STATUS   AGE
default           Active   21h
kube-node-lease   Active   21h
kube-public       Active   21h
kube-system       Active   21h

~]# kubectl get all [-n default]
NAME                             READY   STATUS    RESTARTS   AGE
pod/nginx-ds-4tt4m               1/1     Running   0          16h
pod/nginx-ds-9jcqb               1/1     Running   0          16h
pod/nginx-web-799b86bc9c-9b8mg   1/1     Running   0          16h


NAME                 TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   192.168.0.1       <none>        443/TCP   21h
service/nginx-web    ClusterIP   192.168.131.242   <none>        80/TCP    16h

NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/nginx-ds   2         2         2       2            2           <none>          16h

NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-web   1/1     1            1           16h

NAME                                   DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-web-799b86bc9c   1         1         1       16h

~]# kubectl create ns app
namespace/app created

~]# kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:curl -n kube-public
deployment.apps/nginx-dp created
[root@k8s7-21.host.com ~]# kubectl get deploy -n kube-public
NAME       READY   UP-TO-DATE   AVAILABLE   AGE
nginx-dp   1/1     1            1           23s

[root@k8s7-21.host.com ~]# kubectl get pods -n kube-public -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP           NODE               NOMINATED NODE   READINESS GATES
nginx-dp-9c86cfc59-n9vfr   1/1     Running   0          51s   172.7.21.5   k8s7-21.host.com   <none>           <none>

[root@k8s7-21.host.com ~]# kubectl describe deployment nginx-dp -n kube-public
Name:                   nginx-dp
Namespace:              kube-public
CreationTimestamp:      Sun, 27 Sep 2020 16:24:42 +0800
Labels:                 app=nginx-dp
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx-dp
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate    #滚动发布(更新策略)
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx-dp
  Containers:
   nginx:
    Image:        harbor.od.com/public/nginx:curl
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-dp-9c86cfc59 (1/1 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  5m35s  deployment-controller  Scaled up replica set nginx-dp-9c86cfc59 to 1

[root@k8s7-21.host.com ~]# kubectl exec -it nginx-dp-9c86cfc59-n9vfr /bin/bash -n kube-public

[root@k8s7-21.host.com ~]# watch -n 1 'kubectl describe deployment nginx-dp -n kube-public|grep -C 5 Event'
~]# kubectl delete pod nginx-dp-9c86cfc59-n9vfr -n kube-public [--force --grace-period=0]
使用watch观察pod重建状态变化
强制删除参数:--force --grace-period=0

[root@k8s7-21.host.com ~]# kubectl delete deploy nginx-dp -n kube-public
deployment.extensions "nginx-dp" deleted

[root@k8s7-21.host.com ~]# kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:curl -n kube-public
deployment.apps/nginx-dp created
[root@k8s7-21.host.com ~]# kubectl get all -n kube-public

[root@k8s7-21.host.com ~]# kubectl expose deployment nginx-dp --port=80 -n kube-public
service/nginx-dp exposed
[root@k8s7-21.host.com ~]# kubectl get all -n kube-public
NAME                           READY   STATUS    RESTARTS   AGE
pod/nginx-dp-9c86cfc59-84n55   1/1     Running   0          3m41s


NAME               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
service/nginx-dp   ClusterIP   192.168.204.85   <none>        80/TCP    18s


NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-dp   1/1     1            1           3m41s

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-dp-9c86cfc59   1         1         1       3m41s

~]# curl 192.168.204.85
[root@k8s7-21.host.com ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.204.85:80 nq
  -> 172.7.22.7:80                Masq    1      0          1  

[root@k8s7-21.host.com ~]# kubectl scale deployment nginx-dp --replicas=2 -n kube-public
deployment.extensions/nginx-dp scaled
[root@k8s7-21.host.com ~]# kubectl get pods -n kube-public
NAME                       READY   STATUS    RESTARTS   AGE
nginx-dp-9c86cfc59-84n55   1/1     Running   0          7m21s
nginx-dp-9c86cfc59-ghgg8   1/1     Running   0          14s

TCP  192.168.204.85:80 nq
  -> 172.7.21.5:80                Masq    1      0          0         
  -> 172.7.22.7:80                Masq    1      0          0        

[root@k8s7-21.host.com ~]# kubectl describe svc nginx-dp -n kube-public
Name:              nginx-dp
Namespace:         kube-public
Labels:            app=nginx-dp
Annotations:       <none>
Selector:          app=nginx-dp
Type:              ClusterIP
IP:                192.168.204.85
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         172.7.21.5:80,172.7.22.7:80
Session Affinity:  None
Events:            <none>

image.png
[root@k8s7-21.host.com ~]# kubectl get daemonset -n default
NAME       DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
nginx-ds   2         2         2       2            2           <none>          17h

daemonset这种控制器会让每个运算节点都要运行一份
[root@k8s7-21.host.com ~]# kubectl expose daemonset -n default nginx-ds --port=888
error: cannot expose a DaemonSet.extensions
不允许给daemonset控制器创建svc
image.png
1.获取统一资源配置清单
[root@k8s7-21.host.com ~]# kubectl get pods -n kube-public
NAME                       READY   STATUS    RESTARTS   AGE
nginx-dp-9c86cfc59-84n55   1/1     Running   0          23m
nginx-dp-9c86cfc59-ghgg8   1/1     Running   0          16m
[root@k8s7-21.host.com ~]# kubectl get pods nginx-dp-9c86cfc59-ghgg8 -o yaml -n kube-public
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2020-09-27T09:27:00Z"
  generateName: nginx-dp-9c86cfc59-
  labels:
    app: nginx-dp
    pod-template-hash: 9c86cfc59
  name: nginx-dp-9c86cfc59-ghgg8
  namespace: kube-public
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: nginx-dp-9c86cfc59
    uid: a68e29e0-98ba-4270-93ae-8d14c0b6de64
  resourceVersion: "109194"
  selfLink: /api/v1/namespaces/kube-public/pods/nginx-dp-9c86cfc59-ghgg8
  uid: 76438ce3-058e-4b48-b15d-9b68731ddd37
spec:
  containers:
  - image: harbor.od.com/public/nginx:curl
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-zqxm4
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: k8s7-21.host.com
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: default-token-zqxm4
    secret:
      defaultMode: 420
      secretName: default-token-zqxm4
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2020-09-27T09:27:00Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2020-09-27T09:27:02Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2020-09-27T09:27:02Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2020-09-27T09:27:00Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: docker://1c2f1e9f15b0450f9bd84b7478550d04479d4f48d94e2b43c1b2e48f542a4bcf
    image: harbor.od.com/public/nginx:curl
    imageID: docker-pullable://harbor.od.com/public/nginx@sha256:9fb052e40b572765bca65cf43cbe6a8d62053361afcbac0e69999f61ab72c6d5
    lastState: {}
    name: nginx
    ready: true
    restartCount: 0
    state:
      running:
        startedAt: "2020-09-27T09:27:01Z"
  hostIP: 10.4.7.21
  phase: Running
  podIP: 172.7.21.5
  qosClass: BestEffort
  startTime: "2020-09-27T09:27:00Z"


查看SVC
[root@k8s7-21.host.com ~]# kubectl get svc -n kube-public
NAME       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
nginx-dp   ClusterIP   192.168.204.85   <none>        80/TCP    22m
[root@k8s7-21.host.com ~]# kubectl get svc nginx-dp -o yaml -n kube-public
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2020-09-27T09:23:16Z"
  labels:
    app: nginx-dp
  name: nginx-dp
  namespace: kube-public
  resourceVersion: "108854"
  selfLink: /api/v1/namespaces/kube-public/services/nginx-dp
  uid: a8cd589a-98b8-4ac4-9bbe-50af51e06f85
spec:
  clusterIP: 192.168.204.85
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx-dp
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

点读机专用命令:
[root@k8s7-21.host.com ~]# kubectl explain service.metadata

[root@k8s7-21.host.com ~]# cat nginx-ds-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-ds
  name : nginx-ds
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx-ds
  type: ClusterIP

[root@k8s7-21.host.com ~]# kubectl create/apply -f nginx-ds-svc.yaml 
service/nginx-ds created
[root@k8s7-21.host.com ~]# kubectl get svc 
NAME         TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   192.168.0.1       <none>        443/TCP   23h
nginx-ds     ClusterIP   192.168.90.55     <none>        80/TCP    22s
nginx-web    ClusterIP   192.168.131.242   <none>        80/TCP    18h

[root@k8s7-21.host.com ~]# kubectl get svc nginx-ds -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2020-09-27T10:03:46Z"
  labels:
    app: nginx-ds
  name: nginx-ds
  namespace: default
  resourceVersion: "112350"
  selfLink: /api/v1/namespaces/default/services/nginx-ds
  uid: a69781d2-6d92-4f39-87a6-19ddb454cef5
spec:
  clusterIP: 192.168.90.55
  ports:
  - port: 80    #对外暴露的端口
    protocol: TCP
    targetPort: 80    #容器内的端口
  selector:
    app: nginx-ds
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

在线修改资源配置清单:
[root@k8s7-21.host.com ~]# kubectl edit svc nginx-ds

离线修改:
vim nginx-ds-svc.yaml
kubectl apply -f ....

[root@k8s7-21.host.com ~]# kubectl delete svc nginx-ds
service "nginx-ds" deleted

[root@k8s7-21.host.com ~]# kubectl delete -f nginx-ds-svc.yaml 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容