美文网首页
Kubernetes搭建集群(一主三从)-kubeadmin方式

Kubernetes搭建集群(一主三从)-kubeadmin方式

作者: ssttIsme | 来源:发表于2023-03-12 20:39 被阅读0次
    [root@hadoop102 server]# hostname -i
    192.168.100.102
    [root@hadoop103 server]# hostname -i
    192.168.100.103
    [root@hadoop104 server]# hostname -i
    192.168.100.104  
    

    hadoop102 master
    hadoop103 node1
    hadoop104 node2

    系统初始化

    # 关闭防火墙
    [root@hadoop102 server]# systemctl stop firewalld
    [root@hadoop103 server]# systemctl stop firewalld
    [root@hadoop104 server]# systemctl stop firewalld
    [root@hadoop102 server]# systemctl disable firewalld
    [root@hadoop103 server]# systemctl disable firewalld
    [root@hadoop104 server]# systemctl disable firewalld
    
    # 关闭selinux
    [root@hadoop102 server]# sed -i 's/enforcing/disabled/' /etc/selinux/config 
    [root@hadoop103 server]# sed -i 's/enforcing/disabled/' /etc/selinux/config
    [root@hadoop104 server]# sed -i 's/enforcing/disabled/' /etc/selinux/config
    
    #关闭swap
    [root@hadoop102 server]# sed -ri 's/.*swap.*/#&/' /etc/fstab
    [root@hadoop103 server]# sed -ri 's/.*swap.*/#&/' /etc/fstab
    [root@hadoop104 server]# sed -ri 's/.*swap.*/#&/' /etc/fstab
    
    #在master添加hosts
    #[root@hadoop102 server]#添加如下
    cat >> /etc/hosts <<EOF
    192.168.100.102 hadoop102
    192.168.100.103 hadoop103
    192.168.100.104 hadoop104
    EOF
    
    #将桥接的ipv4流量传递到iptables链
    #[root@hadoop102 server]# [root@hadoop103 server]#  [root@hadoop104 server]# 添加如下
    cat > /etc/sysctl.d/k8s.conf <<EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    
    
    # 生效
    [root@hadoop102 server]# sysctl --system
    [root@hadoop103 server]# sysctl --system
    [root@hadoop104 server]# sysctl --system
    
    # 时间同步
    [root@hadoop102 server]# yum install ntpdate -y
    [root@hadoop103 server]# yum install ntpdate -y
    [root@hadoop104 server]# yum install ntpdate -y
    
    [root@hadoop102 server]# ntpdate time.windows.com
    [root@hadoop103 server]# ntpdate time.windows.com
    [root@hadoop104 server]# ntpdate time.windows.com
    
    

    所有节点安装Docker/kubeadm/kubelet

    Kubernetes默认CRI容器运行时为Docker,因此先安装Docker

    安装Docker

    注意安装低版本

    [root@hadoop102 server]# yum install wget
    [root@hadoop103 server]# yum install wget
    [root@hadoop104 server]# yum install wget
    
    [root@hadoop102 server]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
    [root@hadoop103 server]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
    [root@hadoop104 server]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
    
    
    [root@hadoop102 server]# yum -y install docker-ce-18.06.1.ce-3.el7
    [root@hadoop103 server]# yum -y install docker-ce-18.06.1.ce-3.el7
    [root@hadoop104 server]# yum -y install docker-ce-18.06.1.ce-3.el7
    [root@hadoop102 server]#  systemctl enable docker && systemctl start docker
    [root@hadoop103 server]#  systemctl enable docker && systemctl start docker
    [root@hadoop104 server]#  systemctl enable docker && systemctl start docker
    

    添加阿里云yum软件源

    #[root@hadoop102 server]# [root@hadoop103 server]#  [root@hadoop104 server]# 添加如下
    cat > /etc/docker/daemon.json << EOF
    {
        "registry-mirrors": ["https://0s2uk8va.mirror.aliyuncs.com"]
    }
    EOF
    
    [root@hadoop102 server]# systemctl restart docker
    [root@hadoop103 server]# systemctl restart docker
    [root@hadoop104 server]# systemctl restart docker
    
    
    
    #[root@hadoop102 server]# [root@hadoop103 server]#  [root@hadoop104 server]# 添加如下
    cat > /etc/yum.repos.d/kubernetes.repo  << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enable=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=https://mirros.aliyun.com/kubernetes/yum/doc/yum-key.ogg
    https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.ogg
    EOF
    

    安装kubelet kubeadm kubectl

    注意安装低版本,需要指定版本

    [root@hadoop102 server]# yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
    [root@hadoop103 server]# yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
    [root@hadoop104 server]# yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
    [root@hadoop102 server]# systemctl enable kubelet
    [root@hadoop103 server]# systemctl enable kubelet
    [root@hadoop104 server]# systemctl enable kubelet
    

    部署master

    [root@hadoop102 server]# hostname -i
    192.168.100.102
    [root@hadoop102 server]#
    kubeadm init \
    --apiserver-advertise-address=192.168.100.102 \
    --image-repository registry.aliyuncs.com/google_containers \
    --kubernetes-version v1.18.0 \
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16
    

    留意最后的提示信息 initialized successfully表示成功

    Your Kubernetes control-plane has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    Then you can join any number of worker nodes by running the following on each as root:
    
    kubeadm join 192.168.100.102:6443 --token my1lm4.2m7x96iqayc5q3i7 \
        --discovery-token-ca-cert-hash sha256:1f516059c945179c7a8ba4db68b84f98a076fb35fc4e05877c591d7944de4153 
    
    [root@hadoop102 server]# mkdir -p $HOME/.kube
    [root@hadoop102 server]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    [root@hadoop102 server]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
    [root@hadoop102 server]# kubectl get nodes
    NAME        STATUS     ROLES    AGE   VERSION
    hadoop102   NotReady   master   10m   v1.18.0
    

    加入node

    # [root@hadoop103 server]# 执行
    kubeadm join 192.168.100.102:6443 --token my1lm4.2m7x96iqayc5q3i7 \
        --discovery-token-ca-cert-hash sha256:1f516059c945179c7a8ba4db68b84f98a076fb35fc4e05877c591d7944de4153 
    # [root@hadoop104 server]# 执行
    kubeadm join 192.168.100.102:6443 --token my1lm4.2m7x96iqayc5q3i7 \
        --discovery-token-ca-cert-hash sha256:1f516059c945179c7a8ba4db68b84f98a076fb35fc4e05877c591d7944de4153 
    

    都执行完后在master查看

    [root@hadoop102 server]# kubectl get nodes
    NAME        STATUS     ROLES    AGE   VERSION
    hadoop102   NotReady   master   12m   v1.18.0
    hadoop103   NotReady   <none>   65s   v1.18.0
    hadoop104   NotReady   <none>   7s    v1.18.0
    
    [root@hadoop102 server]# kubeadm token create --print-join-command
    W0312 22:13:18.469702   14071 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
    kubeadm join 192.168.100.102:6443 --token n4g0dy.6zstnsv1ro37dbyv     --discovery-token-ca-cert-hash sha256:1f516059c945179c7a8ba4db68b84f98a076fb35fc4e05877c591d7944de4153 
    

    部署CNI网络插件

    [root@hadoop102 server]# ping 185.199.108.133
    PING 185.199.108.133 (185.199.108.133) 56(84) bytes of data.
    64 bytes from 185.199.108.133: icmp_seq=1 ttl=128 time=82.0 ms
    64 bytes from 185.199.108.133: icmp_seq=2 ttl=128 time=92.1 ms
    

    ping的通的话

    #[root@hadoop102 server]#添加如下
    cat >> /etc/hosts <<EOF 
    185.199.108.133 raw.githubusercontent.com
    EOF
    #[root@hadoop103 server]#添加如下
    cat >> /etc/hosts <<EOF 
    185.199.108.133 raw.githubusercontent.com
    EOF
    #[root@hadoop104 server]#添加如下
    cat >> /etc/hosts <<EOF 
    185.199.108.133 raw.githubusercontent.com
    EOF
    
    
    [root@hadoop102 server]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    [root@hadoop102 server]# kubectl get pods -n kube-system
    [root@hadoop102 server]# kubectl get pods -n kube-system
    NAME                                READY   STATUS    RESTARTS   AGE
    coredns-7ff77c879f-bp7mk            1/1     Running   0          35m
    coredns-7ff77c879f-sjx8w            1/1     Running   0          35m
    etcd-hadoop102                      1/1     Running   0          35m
    kube-apiserver-hadoop102            1/1     Running   0          35m
    kube-controller-manager-hadoop102   1/1     Running   0          35m
    kube-proxy-7xbrd                    1/1     Running   0          35m
    kube-proxy-96qwf                    1/1     Running   0          22m
    kube-proxy-rblkg                    1/1     Running   0          23m
    kube-scheduler-hadoop102            1/1     Running   0          35m
    
    [root@hadoop102 server]# kubectl get nodes
    NAME        STATUS   ROLES    AGE   VERSION
    hadoop102   Ready    master   34m   v1.18.0
    hadoop103   Ready    <none>   23m   v1.18.0
    hadoop104   Ready    <none>   22m   v1.18.0
    

    测试Kubernetes集群

    [root@hadoop102 server]# kubectl create deployment nginx --image=nginx
    deployment.apps/nginx created
    [root@hadoop102 server]# kubectl get pod
    NAME                    READY   STATUS    RESTARTS   AGE
    nginx-f89759699-5l7mp   1/1     Running   0          11m
    [root@hadoop102 server]# kubectl expose deployment nginx --port=80 --type=NodePort
    service/nginx exposed
    

    查看对外端口

    [root@hadoop102 server]# kubectl get pod,svc
    NAME                        READY   STATUS    RESTARTS   AGE
    pod/nginx-f89759699-5l7mp   1/1     Running   0          14m
    
    NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        51m
    service/nginx        NodePort    10.100.102.128   <none>        80:31917/TCP   79s
    

    相关文章

      网友评论

          本文标题:Kubernetes搭建集群(一主三从)-kubeadmin方式

          本文链接:https://www.haomeiwen.com/subject/wiyxrdtx.html