[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
网友评论