Service Management Basic Service Operations # Create service kubectl expose deployment DEPLOYMENT_NAME \ --port=80 \ --target-port=8080 \ --type=ClusterIP # Create service with advanced options kubectl expose deployment DEPLOYMENT_NAME \ --port=443 \ --target-port=8443 \ --type=LoadBalancer \ --name=SERVICE_NAME \ --external-ip=EXTERNAL_IP \ --load-balancer-ip=LOAD_BALANCER_IP # Get service information kubectl get svc kubectl get svc -o wide kubectl get endpoints SERVICE_NAME Advanced Service Configuration # Create service with multiple ports cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Service metadata: name: multi-port-service spec: selector: app: my-app ports: - name: http port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 - name: metrics port: 9090 targetPort: 9090 EOF # Create ExternalName service cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Service metadata: name: external-service spec: type: ExternalName externalName: api.external-service.com EOF # Create headless service cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Service metadata: name: headless-service spec: clusterIP: None selector: app: stateful-app ports: - port: 80 targetPort: 80 EOF Configuration Management ConfigMaps # Create ConfigMap kubectl create configmap CONFIG_NAME \ --from-file=config.properties \ --from-literal=key1=value1 \ --from-literal=key2=value2 # Create ConfigMap from directory kubectl create configmap CONFIG_NAME \ --from-file=config-dir/ # Use ConfigMap in pod cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: config-pod spec: containers: - name: app image: nginx envFrom: - configMapRef: name: CONFIG_NAME volumeMounts: - name: config-volume mountPath: /config volumes: - name: config-volume configMap: name: CONFIG_NAME EOF Secrets # Create secret kubectl create secret generic SECRET_NAME \ --from-file=ssh-privatekey=~/.ssh/id_rsa \ --from-literal=password=mysecretpassword # Create TLS secret kubectl create secret tls TLS_SECRET \ --cert=path/to/tls.cert \ --key=path/to/tls.key # Use secret in pod cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: secret-pod spec: containers: - name: app image: nginx env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: SECRET_NAME key: password volumeMounts: - name: secret-volume mountPath: /etc/secrets readOnly: true volumes: - name: secret-volume secret: secretName: SECRET_NAME EOF Resource Management Resource Quotas # Create ResourceQuota cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ResourceQuota metadata: name: compute-quota spec: hard: requests.cpu: "4" requests.memory: 4Gi limits.cpu: "8" limits.memory: 8Gi pods: "10" EOF # Create LimitRange cat <<EOF | kubectl apply -f - apiVersion: v1 kind: LimitRange metadata: name: limit-range spec: limits: - type: Container default: cpu: 200m memory: 512Mi defaultRequest: cpu: 100m memory: 256Mi max: cpu: 1 memory: 1Gi min: cpu: 50m memory: 128Mi EOF Network Policies # Create NetworkPolicy cat <<EOF | kubectl apply -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: api-allow spec: podSelector: matchLabels: app: api policyTypes: - Ingress - Egress ingress: - from: - podSelector: matchLabels: app: frontend ports: - protocol: TCP port: 8080 egress: - to: - podSelector: matchLabels: app: database ports: - protocol: TCP port: 5432 EOF Advanced Operations RBAC Configuration # Create ServiceAccount kubectl create serviceaccount SA_NAME # Create Role cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "watch"] EOF # Create RoleBinding kubectl create rolebinding NAME \ --clusterrole=view \ --serviceaccount=NAMESPACE:SA_NAME \ --namespace=NAMESPACE # Create ClusterRole cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "watch"] EOF Custom Resource Definitions # Create CRD cat <<EOF | kubectl apply -f - apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: websites.example.com spec: group: example.com versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: url: type: string replicas: type: integer scope: Namespaced names: plural: websites singular: website kind: Website shortNames: - web EOF