Kubectl常用命令
探针-就绪探测
存活探测
lifecycle
pod控制器,Deployment常用命令
1. Kubectl常用命令
# 获取当前资源 pod
$ kubectl get pod
-A, --all-namespaces 查看当前所有名称空间的资源
-n 指定名称空间,默认值 default, kube-system空间存放是当前组件资源
--show-labels 查看当前标签
-l 筛选资源,key, key=value
-o wide 详细信息包括IP,分配的节点
-w 监视, 打印当前资源对象的变化状态
# 进入Pod内部容器的执行命令
$ kubectl exec -it podName -c cName -- command
-c 可以省略,默认进入唯一的容器内部
Ex: $ kubectl exec -it pod-demo -c myapp-1 -- /bin/bash
# 查看资源的描述
$ kubectl explain pod
# 查看pod内部容器的日志
$ kubectl logs podName -c cName
# 查看资源对象的详细描述
$ kubectl describe pod podName
# 删除资源对象
$ kubectl delete kindName objName
--all 删除当前所有的资源对象
2. 探针-就绪探测
# HTTP GET探测
apiVersion: v1
kind: Pod
metadata:
name: readiness-httpget-pod
namespace: default
labels:
app: myapp
env: dev
spec:
containers:
- name: readiness-httpget-container
image: wangyanglinux/myapp:v1.0
imagePullPolicy: IfNotPresent
readinessProbe:
httpGet:
path: /index1.html
port: 80
initialDelaySeconds: 1
periodSeconds: 3
# Exec 命令就绪探测
apiVersion: v1
kind: Pod
metadata:
name: my-app
namespace: default
labels:
app: myapp
env: dev
spec:
containers:
- name: readiness-exec-container
image: wangyanglinux/tools:busybox
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c", "touch /tmp/ready ; sleep 10; rm -rf /tmp/ready; sleep 3600"]
readinessProbe:
exec:
command: ["test", "-e", "/tmp/ready"]
initialDelaySeconds: 1
periodSeconds: 3
3. 存活探测
# HTTP GET存货探测
apiVersion: v1
kind: Pod
metadata:
name: liveness-http-pod
namespace: default
labels:
app: myapp
env: dev
spec:
containers:
- name: liveness-http-container
image: wangyanglinux/myapp:v1.0
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /index.html
port: 80
initialDelaySeconds: 1
periodSeconds: 3
timeoutSeconds: 3
apiVersion: v1
kind: Pod
metadata:
name: liveness-exec-pod
namespace: default
labels:
app: myapp
env: dev
spec:
containers:
- name: liveness-exec-container
image: wangyanglinux/tools:busybox
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c", "touch /tmp/healthy ; sleep 60; rm -rf /tmp/healthy; sleep 3600"]
livenessProbe:
exec:
command: ["test", "-e", "/tmp/healthy"]
initialDelaySeconds: 1
periodSeconds: 3
4. lifecycle
apiVersion: v1
kind: Pod
metadata:
name: lifecycle-http-pod
namespace: default
labels:
app: myapp
env: dev
spec:
containers:
- name: lifecycle-http-container
image: wangyanglinux/myapp:v1.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
lifecycle:
postStart:
httpGet:
path: /index.html
host: 192.168.61.141
port: 8010
preStop:
httpGet:
path: /hostname.html
host: 192.168.61.141
port: 8010
apiVersion: v1
kind: Pod
metadata:
name: lifecycle-exec-pod
namespace: default
labels:
app: myapp
env: dev
spec:
containers:
- name: lifecycle-exec-container
image: wangyanglinux/myapp:v1.0
imagePullPolicy: IfNotPresent
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo 'postStart' > /tmp/lifecycle"]
preStop:
exec:
command: ["/bin/sh", "-c", "echo 'preStop' > /tmp/lifecycle"]
5. pod控制器,Deployment常用命令
# 创建 --record参数可以记录命令
$ kubectl create -f nginx-deployment.yaml --record
# 创建副本数量
$ kubectl scale deployment nginx-deployment --relicas 10
# 自动缩放
$ kubectl autoscale deployment ngnix-deployment --min=5 --max=15 --cpu-percent=80
# 修改Deployment内部容器版本
$ kubectl set image deployment/nginx-deployment nginx-deployment-container=wangyanglinux/myapp:v2.0
# k8s-master污点
spec:
podCIDR: 192.168.0.0/24
podCIDRs:
- 192.168.0.0/24
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/control-plane