🌐 一、基本 Service 配置(ClusterIP)
1. 创建 service.yaml
apiVersion: v1
kind: Service
metadata:
name: web-service1
spec:
selector:
app: webserver
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8080
- name: https
protocol: TCP
port: 443
targetPort: 443
2. 创建 & 删除服务
kubectl create -f service.yaml
kubectl delete -f service.yaml # 如果已存在旧服务则删除
kubectl create -f service.yaml
🔧 二、ClusterIP 服务快速创建与查看
1. 使用命令创建 ClusterIP 服务
kubectl create service clusterip my-cs --tcp=5678:8080
2. 查看服务与详细信息
kubectl get svc
kubectl get svc -o wide
kubectl get endpoints web-service1
kubectl describe service web-service1
3. 删除服务
kubectl delete svc my-cs
kubectl delete service web-service1
⚙️ 三、配置 kube-proxy 为 userspace 模式(Node 节点)
gedit /etc/kubernetes/proxy
添加或修改:
KUBE_PROXY_ARGS="-proxy -mode=userspace"
重启服务:
systemctl restart kube-proxy
🧭 四、自定义 Service 示例(Master 节点)
创建 my-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
type: ClusterIP
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
启动代理
kubectl proxy --port=8080
📺 视频参考:60 分钟位置
🚪 五、NodePort 类型服务配置
创建 nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-nodeport-service
spec:
selector:
app: nginx
ports:
- name: http
port: 8000
protocol: TCP
targetPort: 80
nodePort: 30036
type: NodePort
执行命令
kubectl create -f nodeport.yaml
kubectl get svc -o wide
📦 六、部署 CoreDNS 服务(附源码包操作)
1. 下载 Kubernetes 安装包
wget https://cdn.dl.k8s.io/release/v1.19.3/kubernetes-server-linux-amd64.tar.gz
tar -zxvf kubernetes-server-linux-amd64.tar.gz
cd kubernetes
tar -zxvf kubernetes-src.tar.gz
2. 编辑 CoreDNS 配置
cd cluster/addons/dns/coredns
cp coredns.yaml.base coredns.yaml
gedit coredns.yaml
# 或者使用 vim 并加上行号:
vim coredns.yaml
:set nu
3. 应用 CoreDNS
kubectl create -f coredns.yaml
4. 清理缓存并查看状态
yum clean all
yum makecache
kubectl delete -f coredns.yaml
kubectl get pod --namespace=kube-system
kubectl get all -n kube-system
🔁 七、Kubelet 配置(Node 节点)
修改 kubelet 配置:
gedit /etc/kubernetes/kubelet
添加或修改:
KUBELET_ARGS="--cluster-dns=10.254.0.2 --cluster-domain=cluster.local"
🧱 八、部署 Nginx 示例
1. 创建 nginx-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 2
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
ports:
- containerPort: 80
kubectl create -f nginx-deployment.yaml
2. 配置 nginx 服务暴露(my-nginx.yaml)
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx
bash复制编辑kubectl create -f my-nginx.yaml
🧪 九、部署测试用 CentOS Pod
1. 创建 centos.yaml
apiVersion: v1
kind: Pod
metadata:
name: centos
namespace: default
spec:
containers:
- image: centos
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: centoschao
restartPolicy: Always
kubectl create -f centos.yaml
📌 附:常用指令汇总
kubectl version # 查看版本
kubectl get svc # 查看服务
kubectl get svc -o wide # 查看服务详细信息
kubectl describe service <服务名> # 查看服务描述
kubectl get all -n kube-system # 查看 kube-system 命名空间的所有资源
kubectl get endpoints <服务名> # 查看 Endpoints