🌐 一、基本 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