kubectl 安装
https://kubernetes.io/zh/docs/tasks/tools/install-kubectl/
kubectl常用命令
# kubectl 查看node
kubectl get node
# kubectl 查看pod日志
kubectl -n default log -f ${pod-name}
# kubectl 进入到pod容器内
kubectl exec -it ${pod-name} -- bash
# kubectl查看pod
kubectl get pod -n default -o wide
# kubectl 查看service
kubectl get svc -n default -o wide
# kubectl 查看ingress
kubectl get ing -n default -o wide
# kubectl 查看deployment
kubectl get deployment -n default -o wide
# 查看configmap配置
kubectl describe cm ${config-map-name}
# 从文件创建config-map
kubectl create configmap config-map --from-file=${file-path}
Pod
使用文件创建pod(常用基础版)
apiVersion: apps/v1
kind: Deployment
metadata:
name: ${pod-name}
spec:
selector:
matchLabels:
# 选择器,必须与下面相同
${label-name}: ${label-value}
template:
metadata:
labels:
# 选择器
${label-name}: ${label-value}
spec:
volumes:
- name: logs
hostPath:
# 容器外地址
path: /tmp
containers:
- name: ${containers-name}
image: ${docker-image}
resources:
requests:
memory: "2Gi"
cpu: "500m"
ports:
- containerPort: 8080
env:
- name: PARAMS
value: "此处为docker -e PARAMS='--xxx=fff aaa=bbb'"
volumeMounts:
- name: logs
# 容器内地址
mountPath: /data/applogs
Service
apiVersion: v1
kind: Service
metadata:
name: ${service-name}
labels:
${label-name}: ${label-value}
spec:
type: ClusterIP | NodePort
# 如果为None为headless service
clusterIP: None
ports:
- port: ${containers-port}
name: server
targetPort: ${service-port}
selector:
app: nacos
目前k8s中的长域名需要遵循如下格式访问
service 的 k8s内部域名格式是 ..svc.cluster.local
例如 abc.default.svc.cluster.local
pod的域名访问方式为:pod-ip-address..pod.cluster.local
先执行kubectl get pod -n -owide 查到pod的ip
例如podip为172.31.5.6
访问方式为 172-31-5-6.default.pod.cluster.local
Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-wildcard-host
spec:
rules:
- host: "foo.bar.com"
http:
paths:
- pathType: Prefix
path: "/bar"
backend:
service:
name: service1
port:
number: 80
- host: "*.foo.com"
http:
paths:
- pathType: Prefix
path: "/foo"
backend:
service:
name: service2
port:
number: 80