接上一篇:
https://blog.csdn.net/qq_33996921/article/details/103642827
5、 kube init初始化master
5.1kube init流程
01-进行一系列检查,以确定这台机器可以部署kubernetes
02-生成kubernetes对外提供服务所需要的各种证书可对应目录
/etc/kubernetes/pki/*
03-为其他组件生成访问kube-ApiServer所需的配置文件
ls /etc/kubernetes/
admin.conf controller-manager.conf kubelet.conf scheduler.conf
04-为 Master组件生成Pod配置文件。
ls /etc/kubernetes/manifests/*.yaml
kube-apiserver.yaml
kube-controller-manager.yaml
kube-scheduler.yaml
05-生成etcd的Pod YAML文件。
ls /etc/kubernetes/manifests/*.yaml
kube-apiserver.yaml
kube-controller-manager.yaml
kube-scheduler.yaml
etcd.yaml
06-一旦这些 YAML 文件出现在被 kubelet 监视的/etc/kubernetes/manifests/目录下,kubelet就会自动创建这些yaml文件定义的pod,即master组件的容器。master容器启动后,kubeadm会通过检查localhost:6443/healthz这个master组件的健康状态检查URL,等待master组件完全运行起来
07-为集群生成一个bootstrap token
08-将ca.crt等 Master节点的重要信息,通过ConfigMap的方式保存在etcd中,工后续部署node节点使用
09-最后一步是安装默认插件,kubernetes默认kube-proxy和DNS两个插件是必须安装的
5.2 初始化master节点
注意:此操作是在Master主节点上进行
# 本地有镜像
kubeadm init --kubernetes-version=1.14.0 --apiserver-advertise-address=192.168.0.247 --pod-network-cidr=10.244.0.0/16
【若要重新初始化集群状态:kubeadm reset,然后再进行上述操作】
# --apiserver-advertise-address这里一定是云服务的内网地址
- 记得保存好最后kubeadm join的信息,后面需要在其他work节点中执行;
5.3 根据日志提示,进行如下操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
此时kubectl cluster-info查看一下是否成功
[root@Henry001 ~]# kubectl cluster-info
Kubernetes master is running at https://192.168.0.247:6443
KubeDNS is running at https://192.168.0.247:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
5.4 查看pod验证一下(在kube-system工作空间下查询)
*kubectl get pods -n kube-system
[root@Henry001 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-fb8b8dccf-4ghz9 0/1 Pending 0 4m14s
coredns-fb8b8dccf-klw7x 0/1 Pending 0 4m14s
etcd-henry001 1/1 Running 0 3m30s
kube-apiserver-henry001 1/1 Running 0 3m28s
kube-controller-manager-henry001 1/1 Running 0 3m17s
kube-proxy-g4ztv 1/1 Running 0 4m13s
kube-scheduler-henry001
等待一会儿,同时可以发现像etc,controller,scheduler等组件都以pod的方式安装成功了
注意:coredns没有启动,需要安装网络插件,博主选用的是Calico插件,大家可以选择其他的,如flannel,这个根据个人喜好,只要能实现集群中的网络通信就可以。
5.5 健康检查
[root@Henry001 ~]# curl -k https://localhost:6443/healthz
ok
6、 部署calico网络插件
选择网络插件:https://kubernetes.io/docs/concepts/cluster-administration/addons/
calico网络插件:https://docs.projectcalico.org/v3.9/getting-started/kubernetes/
calico,同样在master节点上操作
# 在k8s中安装calico
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml
# 确认一下calico是否安装成功
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-594b6978c5-r9c5c 1/1 Running 0 54s
kube-system calico-node-4whhl 1/1 Running 0 54s
kube-system coredns-fb8b8dccf-4ghz9 1/1 Running 0 72m
kube-system coredns-fb8b8dccf-klw7x 1/1 Running 0 72m
kube-system etcd-henry001 1/1 Running 0 71m
kube-system kube-apiserver-henry001 1/1 Running 0 71m
kube-system kube-controller-manager-henry001 1/1 Running 0 71m
kube-system kube-proxy-g4ztv 1/1 Running 0 71m
kube-system kube-scheduler-henry001 1/1 Running 0 71m
7、加入集群
- kube join
记得保存初始化master节点的最后打印信息【使用初始化master时生成的kube join 】
kubeadm join 192.168.0.51:6443 --token yu1ak0.2dcecvmpozsy8loh \
--discovery-token-ca-cert-hash sha256:5c4a69b3bb05b81b675db5559b0e4d7972f1d0a61195f217161522f464c307b0
(1)在woker01和worker02上执行上述命令
(2)在master节点上检查集群信息
[root@Henry001 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
henry001 Ready master 172m v1.14.0
henry002 Ready <none> 97m v1.14.0
henry003 Ready <none> 97m v1.14.0
到此,K8s就以搭建完成。
8、 体验Pod
(1)定义pod.yml文件,比如pod_nginx_rs.yaml
cat > pod_nginx_rs.yaml <<EOF
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx
labels:
tier: frontend
spec:
replicas: 3
selector:
matchLabels:
tier: frontend
template:
metadata:
name: nginx
labels:
tier: frontend
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
EOF
(2)根据pod_nginx_rs.yml文件创建pod
kubectl apply -f pod_nginx_rs.yaml
(3)查看pod
kubectl get pods #查看pod
kubectl get pods -o wide # 查看pod详细信息
kubectl describe pod nginx #pod详细信息查看
(4)感受通过rs将pod扩容
kubectl scale rs nginx --replicas=5
kubectl get pods -o wide
(5)删除pod
kubectl delete -f pod_nginx_rs.yaml