美文网首页
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