k8s啟動



[root@ken1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
ken1 Ready master 23h v1.15.2
ken2 Ready <none> 22h v1.15.2
ken3 Ready <none> 22h v1.15.2
 
那些原因造成的status出現NotReady狀態
1.節點docker必須啟動
2.防火牆沒關
3.flannel網絡沒有配置
4.iptables橋配置
5.交換分區沒關
6.kubelet沒啟動
 
k8s集群架構工作演示
 
第一步:部署nginx的pod
[root@ken1 ~]# kubectl run nginx --image=nginx -r 2
[root@ken ~]# kubectl run httpd-ken1--generator=run-pod/v1 --image=httpd --replicas=2

 
-r 指定創建的pod數量
 
第二步:查看創建的pod
[root@ken1 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-7bb7cd8db5-ffr5m 1/1 Running 0 41s
nginx-7bb7cd8db5-sm4l5 1/1 Running 0 41s
 
第三步:查看deployment
[root@ken1 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 2m34s
 
READY 2/2 第一個2是已經啟動的pod數,第二個2是需要總共啟動的pod數量
UP-TO-DATE  需要的數量
AVAILABLE 可用的數量
 
第四步:出刊詳細輸出信息
[root@ken1 ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-7bb7cd8db5-ffr5m 1/1 Running 0 4m41s 10.244.1.4 ken2 <none> <none>
nginx-7bb7cd8db5-sm4l5 1/1 Running 0 4m41s 10.244.4.4 ken3 <none> <none>
 
分析創建過程:
1.我們使用kubectl通知api-server創建nginx deployment
2. deployment-manager創建nginx deployment
3. schelduler把兩個pod調度到不用節點之上
4. 節點之上的kubelet創建兩個pod
 查看縮寫
 kubectl api-resources
k8s運行deployment
 
第一步:查看當前deploy
[root@ken1 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 11m
 
第二步:查看當前pod
kubectl
[root@ken1 ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-7bb7cd8db5-46rfm 1/1 Running 0 3m41s 10.244.1.5 ken2 <none> <none>
nginx-7bb7cd8db5-sm4l5 1/1 Running 0 12m 10.244.4.4 ken3 <none> <none>
 -o wide 顯示詳細信息
第三步:deploy詳細信息
Kubectl describe --help
[root@ken1 ~]# kubectl describe deploy nginx
Name: nginx
Namespace: default
CreationTimestamp: Tue, 20 Aug 2019 09:37:56 +0800
Labels: run=nginx
Annotations: deployment.kubernetes.io/revision: 1
Selector: run=nginx
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: run=nginx
Containers:
nginx:
Image: nginx
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-7bb7cd8db5 (2/2 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 14m deployment-controller Scaled up replica set nginx-7bb7cd8db5 to 2
查看lebels 
kubectl get deploy nginx --show-labels
NAME READY UP-TO-DATE AVAILABLE AGE LABELS
nginx 2/2 2 2 50m run=nginx
第四步:查看replicaset
[root@ken1 ~]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-7bb7cd8db5 2 2 2 18m
 
第五步:查看rs詳細信息
[root@ken1 ~]# kubectl describe rs nginx-7bb7cd8db5
Name: nginx-7bb7cd8db5
Namespace: default
Selector: pod-template-hash=7bb7cd8db5,run=nginx
Labels: pod-template-hash=7bb7cd8db5
run=nginx
Annotations: deployment.kubernetes.io/desired-replicas: 2
deployment.kubernetes.io/max-replicas: 3
deployment.kubernetes.io/revision: 1
Controlled By: Deployment/nginx
Replicas: 2 current / 2 desired
Pods Status: 2 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
Labels: pod-template-hash=7bb7cd8db5
run=nginx
Containers:
nginx:
Image: nginx
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 19m replicaset-controller Created pod: nginx-7bb7cd8db5-ffr5m
Normal SuccessfulCreate 19m replicaset-controller Created pod: nginx-7bb7cd8db5-sm4l5
Normal SuccessfulCreate 10m replicaset-controller Created pod: nginx-7bb7cd8db5-46rfm
 
 
第六步:查看pod詳細信息
[root@ken1 ~]# kubectl describe po nginx-7bb7cd8db5-46rfm
Name: nginx-7bb7cd8db5-46rfm
Namespace: default
Priority: 0
Node: ken2/192.168.64.6
Start Time: Tue, 20 Aug 2019 09:47:13 +0800
Labels: pod-template-hash=7bb7cd8db5
run=nginx
Annotations: <none>
Status: Running
IP: 10.244.1.5
Controlled By: ReplicaSet/nginx-7bb7cd8db5
Containers:
nginx:
Container ID: docker://e9620bdc9424eba06d4815cd69f8524b6f729af4beff418ab0520e43d2af3da9
Image: nginx
Image ID: docker-pullable://nginx@sha256:53ddb41e46de3d63376579acf46f9a41a8d7de33645db47a486de9769201fec9
Port: <none>
Host Port: <none>
State: Running
Started: Tue, 20 Aug 2019 09:47:24 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-4vj67 (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-4vj67:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-4vj67
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 11m default-scheduler Successfully assigned default/nginx-7bb7cd8db5-46rfm to ken2
Normal Pulling 11m kubelet, ken2 Pulling image "nginx"
Normal Pulled 11m kubelet, ken2 Successfully pulled image "nginx"
Normal Created 11m kubelet, ken2 Created container nginx
Normal Started 11m kubelet, ken2 Started container nginx
 
第七步:查看pod日志
[root@ken1 ~]# kubectl logs nginx-7bb7cd8db5-46rfm
 
持續檢測pod日志
[root@ken1 ~]# kubectl logs nginx-7bb7cd8db5-46rfm -f
 

測試壓力
 [root@zxw10 ~]# ab -n 55 -c 10 http://10.244.3.4/index.heml
 
刪除pod
 
第一步:直接刪除deploy
[root@ken1 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-7bb7cd8db5-46rfm 1/1 Running 0 21m
nginx-7bb7cd8db5-sm4l5 1/1 Running 0 30m
[root@ken1 ~]# kubectl delete po nginx-7bb7cd8db5-46rfm
pod "nginx-7bb7cd8db5-46rfm" deleted
[root@ken1 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-7bb7cd8db5-prgr8 1/1 Running 0 8s
nginx-7bb7cd8db5-sm4l5 1/1 Running 0 30s
注意:
直接刪除pod是無法進行刪除的,如果說這個pod被deploy進行管理的
[root@ken1 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 31m
[root@ken1 ~]# kubectl delete deploy nginx
deployment.extensions "nginx" deleted
[root@ken1 ~]# kubectl get deploy
No resources found.
[root@ken1 ~]# kubectl get po
No resources found.
 
 
pod命名規則
 
nginx3-77694b9997-c82dg
deploy  replicaset     隨機字符串
 
 
比如:現在啟動一個deploy,配置副本數為3,假如其中一個node宕機,會發生什么?
第一步:啟動deploy,副本數為3
[root@ken1 ~]# kubectl run nginx3 --image=nginx -r 3
 
第二步:查看pod詳細信息
[root@ken1 ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx1-7885dd9f7-vqk7t 1/1 Running 0 5m1s 10.244.1.8 ken2 <none> <none>
nginx3-77694b9997-25cbs 1/1 Running 0 25s 10.244.4.9 ken3 <none> <none>
nginx3-77694b9997-q5ngb 1/1 Running 0 25s 10.244.1.10 ken2 <none> <none>
nginx3-77694b9997-qw5rq 1/1 Running 0 25s 10.244.4.8 ken3 <none> <none>
 
第三步:模擬ken3宕機
poweroff
 
第四步:查看node節點狀態
[root@ken1 ~]# kubectl get no
NAME STATUS ROLES AGE VERSION
ken1 Ready master 23h v1.15.2
ken2 Ready <none> 23h v1.15.2
ken3 NotReady <none> 23h v1.15.2
 
 
第五步:持續查看pod狀態
[root@ken1 ~]# kubectl get po -o wide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx1-7885dd9f7-vqk7t 1/1 Running 0 6m40s 10.244.1.8 ken2 <none> <none>
nginx3-77694b9997-25cbs 1/1 Running 0 2m4s 10.244.4.9 ken3 <none> <none>
nginx3-77694b9997-q5ngb 1/1 Running 0 2m4s 10.244.1.10 ken2 <none> <none>
nginx3-77694b9997-qw5rq 1/1 Running 0 2m4s 10.244.4.8 ken3 <none> <none>
 
 
創建資源的兩種方式
1,kubectl命令行工具進行創建
2.通過yml文件
 
 
認識yml文件
 

 

 
① apiVersion 是當前配置格式的版本。
先執行kubectl api-resources找到所有的資源
在執行命令 kubectl explain deploy即可獲取到版本和類型信息

 

② kind 是要創建的資源類型,這里是 Deployment。
③ metadata 是該資源的元數據,name 是必需的元數據項。
④ spec 部分是該 Deployment 的規格說明。
⑤ replicas 指明副本數量,默認為 1。
⑥ template 定義 Pod 的模板,這是配置文件的重要部分。
⑦ metadata 定義 Pod 的元數據,至少要定義一個 label。label 的 key 和 value 可以任意指定。
⑧ spec 描述 Pod 的規格,此部分定義 Pod 中每一個容器的屬性,name 和 image 是必需的。
 
 
案列:啟動nginxpod,副本數3
 
1.命令行工具
[root@ken1 ~]# kubectl run nginx3 --image=nginx -r 3
 
2.編寫yml文件
第一步:編寫yml文件
[root@ken1 ~]# cat nginx.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
template:
metadata:
labels:
kk: ken
spec:
containers:
- name: nginx
image: nginx
 
第二步:執行yml文件
[root@ken1 ~]# kubectl apply -f nginx.yml
 
第三步:查看創建的資源
[root@ken1 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 2/2 2 2 59s
nginx1 1/1 1 1 51m
nginx3 3/3 3 3 47m
 
第四步:查看pod
[root@ken1 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-bdbfcfb4b-5jnqz 1/1 Running 0 78s
nginx-bdbfcfb4b-lmbkp 1/1 Running 0 78s
nginx1-7885dd9f7-vqk7t 1/1 Running 0 52m
nginx3-77694b9997-25cbs 1/1 Terminating 0 47m
nginx3-77694b9997-dsllp 1/1 Running 0 41m
nginx3-77694b9997-q5ngb 1/1 Running 0 47m
nginx3-77694b9997-qw5rq 1/1 Terminating 0 47m
nginx3-77694b9997-vhlnj 1/1 Running 0 41m
 
 
第五步:查看標簽
[root@ken1 ~]# kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-bdbfcfb4b-5jnqz 1/1 Running 0 2m29s kk=ken,pod-template-hash=bdbfcfb4b
nginx-bdbfcfb4b-lmbkp 1/1 Running 0 2m29s kk=ken,pod-template-hash=bdbfcfb4b
 
 
 
給node打標簽
 
第一步:給node打標簽
[root@ken1 ~]# kubectl label node ken3 disk=ssd
 
第二步;查看節點標簽
[root@ken1 ~]# kubectl get no --show-labels
NAME STATUS ROLES AGE VERSION LABELS
ken1 Ready master 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken1,kubernetes.io/os=linux,node-role.kubernetes.io/master=
ken2 Ready <none> 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken2,kubernetes.io/os=linux
ken3 NotReady <none> 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disk=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken3,kubernetes.io/os=linux
 
第三步:修改yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
template:
metadata:
labels:
kk: ken
spec:
containers:
- name: nginx
image: nginx
nodeSelector:
disk: ssd
 
第四步:執行yml文件
[root@ken1 ~]# kubectl apply -f nginx.yml
 
第五步:查看pod
[root@ken1 ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-66bdccc56-2d6m4 1/1 Running 0 7m18s 10.244.4.11 ken3 <none> <none>
nginx-66bdccc56-bxh6z 1/1 Running 0 7m19s 10.244.4.10 ken3 <none> <none>
nginx1-7885dd9f7-vqk7t 1/1 Running 0 66m 10.244.1.8 ken2 <none> <none>
nginx3-77694b9997-dsllp 1/1 Running 0 55m 10.244.1.11 ken2 <none> <none>
nginx3-77694b9997-q5ngb 1/1 Running 0 62m 10.244.1.10 ken2 <none> <none>
nginx3-77694b9997-vhlnj 1/1 Running 0 55m 10.244.1.12 ken2 <none> <none>
 
第六步:取消標簽
[root@ken1 ~]# kubectl label no ken3 disk-
node/ken3 labeled
[root@ken1 ~]# kubectl get no --show-labels
NAME STATUS ROLES AGE VERSION LABELS
ken1 Ready master 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken1,kubernetes.io/os=linux,node-role.kubernetes.io/master=
ken2 Ready <none> 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken2,kubernetes.io/os=linux
ken3 Ready <none> 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken3,kubernetes.io/os=linux,run=nginx
 
 
自動伸縮
 
第一步:修改yml文件
[root@ken1 ~]# cat nginx.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 5
template:
metadata:
labels:
kk: ken
spec:
containers:
- name: nginx
image: nginx
 
第二步:查看pod
[root@ken1 ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-bdbfcfb4b-2gbgr 1/1 Running 0 45s 10.244.4.14 ken3 <none> <none>
nginx-bdbfcfb4b-l9w6p 1/1 Running 0 94s 10.244.4.12 ken3 <none> <none>
nginx-bdbfcfb4b-qfnjt 1/1 Running 0 93s 10.244.1.15 ken2 <none> <none>
nginx-bdbfcfb4b-snmcb 1/1 Running 0 45s 10.244.1.16 ken2 <none> <none>
nginx-bdbfcfb4b-vw62d 1/1 Running 0 46s 10.244.4.13 ken3 <none> <none>
nginx1-7885dd9f7-vqk7t 1/1 Running 0 69m 10.244.1.8 ken2 <none> <none>
nginx3-77694b9997-dsllp 1/1 Running 0 58m 10.244.1.11 ken2 <none> <none>
nginx3-77694b9997-q5ngb 1/1 Running 0 65m 10.244.1.10 ken2 <none> <none>
nginx3-77694b9997-vhlnj 1/1 Running 0 58m 10.244.1.12 ken2 <none> <none>
 
 
第三步:減少pod
[root@ken1 ~]# cat nginx.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
template:
metadata:
labels:
kk: ken
spec:
containers:
- name: nginx
image: nginx
 
第四步:查看pod
[root@ken1 ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-bdbfcfb4b-qfnjt 1/1 Running 0 2m53s 10.244.1.15 ken2 <none> <none>
nginx1-7885dd9f7-vqk7t 1/1 Running 0 71m 10.244.1.8 ken2 <none> <none>
nginx3-77694b9997-dsllp 1/1 Running 0 60m 10.244.1.11 ken2 <none> <none>
nginx3-77694b9997-q5ngb 1/1 Running 0 66m 10.244.1.10 ken2 <none> <none>
nginx3-77694b9997-vhlnj 1/1 Running 0 60m 10.244.1.12 ken2 <none> <none>
 
刪除yml文件部署的pod
 
方法一:刪除deploy
[root@ken1 ~]# kubectl delete deploy nginx
 
方法二:刪除yml文件
[root@ken1 ~]# kubectl delete -f nginx.yml
 
執行此命令yml文件依然存在!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM