从零搭建K8S集群(无需科学上网)(二)

接上一篇:
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
发布了28 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_33996921/article/details/103649020