安装
K8S
Ubuntu 18.04安装
准备
一台master,两个node
镜像仓库(harbor或公有仓库)
关闭swap分区
sudo sed -ri 's/.*swap.*/#&/' /etc/fstab && sudo swapoff -a
安装kubeadm
容器Runtime
使用Docker
使用Contained
相比docker更纯粹,更专注于容器runtime
https://kubernetes.io/docs/setup/production-environment/container-runtimes/
```
prepare
sudo bash -c 'cat > /etc/modules-load.d/containerd.conf <<EOF
br_netfilter
EOF'
sudo bash -c 'cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF'
sudo sysctl --system
sudo apt-get update && sudo apt-get install -y containerd
Configure containerd
sudo mkdir -p /etc/containerd sudo bash -c 'containerd config default > /etc/containerd/config.toml' sudo sed -i 's/systemd_cgroup = false/systemd_cgroup = true/' /etc/containerd/config.toml
Restart containerd
sudo systemctl restart containerd
sudo kubeadm init --apiserver-advertise-address=192.168.76.139 --control-plane-endpoint=192.168.76.139:6443 --upload-certs --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
echo 'apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers:
name: nginx
image: nginx
ports:
containerPort: 80
' | kubectl apply -f -
```
kubectl get pods
输出如下:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-d46f5678b-4xk6v 1/1 Running 0 63s 10.244.2.4 vm3 nginx-deployment-d46f5678b-t54mx 1/1 Running 0 63s 10.244.1.5 vm2 删除任意一个pod,k8s都会再创建一个,保持数量为2
kubectl get deployment
输出如下:
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR nginx-deployment 2/2 2 2 92s nginx nginx app=nginx
扩容: kubectl scale --replicas=3 deployment nginx-deployment
创建Service
查看结果 kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kubernetes ClusterIP 10.96.0.1 443/TCP 22h nginx-svc ClusterIP 10.99.243.241 8880/TCP 54s app=nginx
转为NodePort模式:
查看结果 kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kubernetes ClusterIP 10.96.0.1 443/TCP 22h nginx-svc NodePort 10.99.243.241 8880:30548/TCP 10m app=nginx NodePort模式使所有节点都暴露了一个端口,可使用节点ip加暴露的端口来访问服务
使用Ingress来暴露服务
Last updated
Was this helpful?