[root@jdmaster ~]# docker version Client: Docker Engine - Community Version: 23.0.1 API version: 1.42 Go version: go1.19.5 Git commit: a5ee5b1 Built: Thu Feb 9 19:51:00 2023 OS/Arch: linux/amd64 Context: default Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@jdmaster ~]# systemctl enable docker Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
192.168.1.7 是master的ip。 –service-cidr string (Use alternative range of IP address for service VIPs. )(default “10.96.0.0/12”) 服务发布暴露–》dnat
–pod-network-cidr string ( Specify range of IP addresses for the pod network. If set, the control plane will automatically allocate CIDRs for every node.)
[root@jdnode-1 docker]# ping jdmaster PING jdmaster (192.168.1.7) 56(84) bytes of data. 64 bytes from jdmaster (192.168.1.7): icmp_seq=1 ttl=64 time=1.00 ms 64 bytes from jdmaster (192.168.1.7): icmp_seq=2 ttl=64 time=1.59 ms 64 bytes from jdmaster (192.168.1.7): icmp_seq=3 ttl=64 time=1.87 ms ^C --- jdmaster ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 1.005/1.492/1.875/0.365 ms
2.执行:
[root@jdnode-1 docker]# kubeadm join 192.168.1.7:6443 --token xv2cjr.d0win422go1bf2km > --discovery-token-ca-cert-hash sha256:7a2c5fcf9acd321a0bccd13333e3430004e158988b272b60459b1cf6ed48dea0 [preflight] Running pre-flight checks [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 23.0.1. Latest validated version: 20.10 [preflight] Reading configuration from the cluster... [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env" [kubelet-start] Starting the kubelet [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
3.所有的node节点都需要加入到k8s集群里,查看集群里的机器:
[root@jdmaster docker]# kubectl get node NAME STATUS ROLES AGE VERSION jdmaster NotReady control-plane,master 15m v1.23.6 jdnode-1 NotReady none> 2m33s v1.23.6 jdnode-2 NotReady none> 2m33s v1.23.6
[root@jdmaster ~]# kubectl apply -f kube-flannel.yml namespace/kube-flannel created clusterrole.rbac.authorization.k8s.io/flannel created clusterrolebinding.rbac.authorization.k8s.io/flannel created serviceaccount/flannel created configmap/kube-flannel-cfg created daemonset.apps/kube-flannel-ds created
root@jdmaster ~]# kubectl get node NAME STATUS ROLES AGE VERSION jdmaster Ready control-plane,master 140m v1.23.6 jdnode-1 Ready none> 127m v1.23.6 jdnode-2 Ready none> 127m v1.23.6
[root@jdmaster ~]# kubectl get ns NAME STATUS AGE default Active 140m kube-flannel Active 81s kube-node-lease Active 140m kube-public Active 140m kube-system Active 140m
[root@jdmaster ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES k8s-nginx-6d779d947c-6ndll 1/1 Running 0 26s 10.244.1.5 jdnode-2 none> none> k8s-nginx-6d779d947c-f2ngw 1/1 Running 0 26s 10.244.1.6 jdnode-2 none> none> k8s-nginx-6d779d947c-jhl5t 1/1 Running 0 26s 10.244.2.5 jdnode-1 none> none> k8s-nginx-6d779d947c-xzm9x 1/1 Running 0 26s 10.244.2.4 jdnode-1 none> none>
若要删除pod:
[root@scmaster flannel]# kubectl delete deployment k8s-nginx deployment.apps "k8s-nginx" deleted [root@scmaster flannel]# kubectl get pod No resources found in default namespace. [root@scmaster flannel]#
[root@jdmaster pod]# kubectl apply -f nginx.yaml pod/jdnginx created [root@jdmaster pod]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES jdnginx 1/1 Running 0 2m8s 10.244.2.6 jdnode-1 none> none>
Pod 是 Kubernetes 中最小的可部署单元,通常包含一个或多个容器。Pod 的启动流程通常可以分为以下几个步骤:
创建 Pod:通过 Kubernetes API 或命令行工具创建 Pod 对象,并指定 Pod 的名称、标签、容器等信息。
Pod 调度:Kubernetes 调度器会将 Pod 调度到集群中的某个节点上。调度器会考虑节点的资源、标签、Pod 的需求等因素,选择最合适的节点。
创建容器:一旦 Pod 被调度到节点上,Kubernetes 就会创建容器并启动应用程序。如果 Pod 包含多个容器,则会依次创建每个容器。
Pod 生命周期:Pod 有三种生命周期阶段,分别是 Pending、Running 和 Succeeded/Failed。在 Pending 阶段,Kubernetes 正在为 Pod 分配资源。在 Running 阶段,Pod 中的容器正在运行。在 Succeeded/Failed 阶段,Pod 中的所有容器已经完成或失败。
容器状态:在 Pod 运行期间,Kubernetes 会监控容器的状态,例如容器的运行状态、资源使用情况、日志输出等信息。如果容器出现故障或崩溃,Kubernetes 会自动重启容器。
Pod 清理:当一个 Pod 不再需要时,Kubernetes 会自动清理 Pod 对象及其关联的资源,例如容器、存储卷等。 总之,Pod 的启动流程是一个复杂的过程,涉及到 Pod 的创建、调度、容器创建、生命周期管理、容器状态监控和清理等多个方面。Kubernetes 提供了丰富的工具和功能,可以帮助用户轻松地管理和部署 Pod,提高应用程序的可用性和稳定性。