|
| 1 | +# 虚拟机部署k8s集群 |
| 2 | + |
| 3 | +> [域名ip查询] https://ip.tool.chinaz.com/raw.githubusercontent.com |
| 4 | +
|
| 5 | +```sh |
| 6 | +# 关闭防火墙 |
| 7 | +[root@k8s-master ~]# systemctl stop firewalld |
| 8 | +# 禁用开机启动 |
| 9 | +[root@k8s-master ~]# systemctl disable firewalld |
| 10 | + |
| 11 | +# 禁用交换分区 |
| 12 | +[root@k8s-master ~]# swapoff -a |
| 13 | + |
| 14 | +# 禁用selinux |
| 15 | +[root@k8s-master ~]# setenforce 0 |
| 16 | + |
| 17 | +# 查看状态 |
| 18 | +[root@k8s-master ~]# getenforce 0 |
| 19 | +[root@k8s-master ~]# vim /etc/selinux/config |
| 20 | +#永久关闭selinux,在文档最后加下面这句 |
| 21 | +SELINUX=disabled |
| 22 | + |
| 23 | +# 更改hostname名称 |
| 24 | +[root@k8s-master ~]# hostnamectl set-hostname $hostname |
| 25 | + |
| 26 | +# 建立IP与主机名的映射 |
| 27 | +[root@k8s-master ~]# vim /etc/hosts |
| 28 | + |
| 29 | +172.20.73.73 k8s-master |
| 30 | +172.20.75.230 k8s-node1 |
| 31 | +172.20.71.151 k8s-node2 |
| 32 | + |
| 33 | +# 时间同步 |
| 34 | +[root@k8s-master ~]# yum -y install ntp |
| 35 | +[root@k8s-master ~]# systemctl start ntpd |
| 36 | +[root@k8s-master ~]# systemctl enable ntpd |
| 37 | + |
| 38 | +# 将桥接的IPv4流量传递到iptables的链 |
| 39 | +[root@k8s-master ~]# touch /etc/sysctl.d/k8s.conf |
| 40 | + |
| 41 | +[root@k8s-master ~]# cat >> /etc/sysctl.d/k8s.conf <<EOF |
| 42 | +net.bridge.bridge-nf-call-ip6tables=1 |
| 43 | +net.bridge.bridge-nf-call-iptables=1 |
| 44 | +net.ipv4.ip_forward=1 |
| 45 | +vm.swappiness=0 |
| 46 | +EOF |
| 47 | + |
| 48 | +# 加载系统参数 |
| 49 | +[root@k8s-master ~]# sysctl --system |
| 50 | + |
| 51 | +# 安装docker,k8s驱动 |
| 52 | +[root@k8s-master ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
| 53 | + |
| 54 | +[root@k8s-master ~]# yum list docker-ce --showduplicates | sort -r |
| 55 | + |
| 56 | +[root@k8s-master ~]# yum -y install docker-ce docker-ce-cli containerd.io |
| 57 | + |
| 58 | +[root@k8s-master ~]# systemctl start docker |
| 59 | +# 设置开机启动 |
| 60 | +[root@k8s-master ~]# systemctl enable docker |
| 61 | + |
| 62 | +[root@k8s-master ~]# vim /etc/docker/daemon.json |
| 63 | + |
| 64 | +{ |
| 65 | + "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"], |
| 66 | + "exec-opts": ["native.cgroupdriver=systemd"] |
| 67 | +} |
| 68 | + |
| 69 | +[root@k8s-master ~]# systemctl restart docker |
| 70 | +[root@k8s-master ~]# docker info |tail -5 |
| 71 | +[root@k8s-master ~]# docker info | grep -i "Cgroup Driver" |
| 72 | + |
| 73 | +# 使用kubeadm安装k8s及相关工具 |
| 74 | +[root@k8s-master ~]# cat >/etc/yum.repos.d/kubernetes.repo <<EOF |
| 75 | +[kubernetes] |
| 76 | +name=Kubernetes |
| 77 | +baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 |
| 78 | +enabled=1 |
| 79 | +gpgcheck=0 |
| 80 | +repo_gpgcheck=0 |
| 81 | +gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg |
| 82 | +EOF |
| 83 | + |
| 84 | +# 查看可安装版本 |
| 85 | +[root@k8s-master ~]# yum list --showduplicates | grep kubeadm |
| 86 | + |
| 87 | +# 安装指定版本 |
| 88 | +[root@k8s-master ~]# yum -y install kubelet-1.22.6 kubeadm-1.22.6 kubectl-1.22.6 |
| 89 | + |
| 90 | +# 开机启动 |
| 91 | +[root@k8s-master ~]# systemctl enable kubelet |
| 92 | + |
| 93 | +# 初始化master节点(MASTER) |
| 94 | +[root@k8s-master ~]# kubeadm init --apiserver-advertise-address=8.141.175.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.22.6 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 |
| 95 | + |
| 96 | +[root@k8s-master ~]# mkdir -p $HOME/.kube |
| 97 | +[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config |
| 98 | +[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config |
| 99 | +[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf |
| 100 | + |
| 101 | +[root@k8s-master ~]# scp /etc/kubernetes/admin.conf k8s-node1:/etc/kubernetes/admin.conf |
| 102 | +[root@k8s-master ~]# scp /etc/kubernetes/admin.conf k8s-node1:/etc/kubernetes/admin.conf |
| 103 | + |
| 104 | +# 将node节点加入集群,要在node节点机器上执行,node结点需要安装k8s相关组件,即kubeadm init之前的操作都需要执行 |
| 105 | +[root@k8s-master ~]# kubeadm join 172.20.73.73:6443 --token 0416zv.g44s1xnloyi8xjvm --discovery-token-ca-cert-hash sha256:37349a9729af525fe5716148545561d447b0a06ff6f9e76c4bc8269c79748017 |
| 106 | + |
| 107 | + |
| 108 | +# 部署容器网络,CNI网络插件 |
| 109 | + |
| 110 | +#执行下面这条命令在线配置pod网络,因为是国外网站,所以可能报错,测试去http://ip.tool.chinaz.com/网站查到 |
| 111 | +#域名raw.githubusercontent.com对应的IP,把域名解析配置到/etc/hosts文件,然后执行在线配置pod网络,多尝试几次即可成功。 |
| 112 | +[root@k8s-master ~]# echo "185.199.110.133 raw.githubusercontent.com" >> /etc/hosts |
| 113 | + |
| 114 | +[root@k8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml |
| 115 | + |
| 116 | +# 查看运行状态 |
| 117 | +[root@k8s-master ~]# kubectl get pods -n kube-system |
| 118 | +NAME READY STATUS RESTARTS AGE |
| 119 | +coredns-7f6cbbb7b8-2gwkr 1/1 Running 0 7m57s |
| 120 | +coredns-7f6cbbb7b8-lwx8s 1/1 Running 0 7m57s |
| 121 | +etcd-k8s-master 1/1 Running 1 8m11s |
| 122 | +kube-apiserver-k8s-master 1/1 Running 1 8m12s |
| 123 | +kube-controller-manager-k8s-master 1/1 Running 1 8m11s |
| 124 | +kube-proxy-2wbds 1/1 Running 0 4m37s |
| 125 | +kube-proxy-9lqxn 1/1 Running 0 7m57s |
| 126 | +kube-proxy-jjbtr 1/1 Running 0 4m47s |
| 127 | +kube-scheduler-k8s-master 1/1 Running 1 8m11s |
| 128 | + |
| 129 | +# 验证集群是否正常,要注意看对外暴露的端口号(自动生成的) |
| 130 | +[root@k8s-master ~]# kubectl create deployment httpd --image=httpd |
| 131 | +deployment.apps/httpd created |
| 132 | +[root@k8s-master ~]# kubectl expose deployment httpd --port=80 --type=NodePort |
| 133 | +service/httpd exposed |
| 134 | +[root@k8s-master ~]# kubectl get pod,svc |
| 135 | +NAME READY STATUS RESTARTS AGE |
| 136 | +pod/httpd-757fb56c8d-zq2fj 1/1 Running 0 17s |
| 137 | + |
| 138 | +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
| 139 | +service/httpd NodePort 10.106.137.56 <none> 80:31537/TCP 7s |
| 140 | +service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9m9s |
| 141 | + |
| 142 | +# 安装kubeboard |
| 143 | +[root@k8s-master k8s-yaml]# kubectl apply -f https://kuboard.cn/install-script/kuboard-beta.yaml |
| 144 | +deployment.apps/kuboard created |
| 145 | +service/kuboard created |
| 146 | +serviceaccount/kuboard-user created |
| 147 | +clusterrolebinding.rbac.authorization.k8s.io/kuboard-user created |
| 148 | +serviceaccount/kuboard-viewer created |
| 149 | +clusterrolebinding.rbac.authorization.k8s.io/kuboard-viewer created |
| 150 | +[root@k8s-master k8s-yaml]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') |
| 151 | +Name: kuboard-user-token-6p88l |
| 152 | +Namespace: kube-system |
| 153 | +Labels: <none> |
| 154 | +Annotations: kubernetes.io/service-account.name: kuboard-user |
| 155 | + kubernetes.io/service-account.uid: a980558e-fd23-4e0e-a757-c7bac989a34d |
| 156 | + |
| 157 | +Type: kubernetes.io/service-account-token |
| 158 | + |
| 159 | +Data |
| 160 | +==== |
| 161 | +ca.crt: 1099 bytes |
| 162 | +namespace: 11 bytes |
| 163 | +token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlM4cFhRbW9Yb25HdGxzSm9HUWQwXzlfeUxXZVZ5UWZ4VHVxQUxwSnl3UXcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4tNnA4OGwiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYTk4MDU1OGUtZmQyMy00ZTBlLWE3NTctYzdiYWM5ODlhMzRkIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9.q2fnZZN1-BN5QsLeoai1vQ3IkiuIeUTGt-lncgjFBZILxDoNRRQDlvIxPIvYu4PHGpbUf295vLRc5y0CvNizWAZqenb3exkuM4ahF0mNU68B2NYBnZ3No86GiFNj-pgrKpeaECHHERZn5I3h3aKupzYHlLgDes3-UATurf3UsgpUO7Gbp6xcT8OVDK_y81JnQLwXDIKEF09CbzgjF8EOn2_Gbi-zyapZQjVV3sDaRPs9-cXLRrD1n2FmRtYVb0fSCu_V0nnn_5gIy1OlI5wEHfUgrFOtEAg6B38AYyQamzQqPT6YIehpur1C7g9c5VCriOH1aAgj8WSAB31haeuvFw |
| 164 | +[root@k8s-master k8s-yaml]# kubectl get svc -n kube-system |
| 165 | +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
| 166 | +kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 76m |
| 167 | +kuboard NodePort 10.102.159.239 <none> 80:32567/TCP 21s |
| 168 | + |
| 169 | +# 访问ip:32567 |
| 170 | +``` |
| 171 | + |
| 172 | +#### 清除node结点环境 |
| 173 | +```sh |
| 174 | +#!/bin/sh |
| 175 | + kubeadm reset |
| 176 | + |
| 177 | + systemctl stop kubelet |
| 178 | + |
| 179 | + systemctl stop docker |
| 180 | + |
| 181 | + rm -rf /var/lib/cni/ |
| 182 | + |
| 183 | + rm -rf /var/lib/kubelet/* |
| 184 | + |
| 185 | + rm -rf /etc/cni/ |
| 186 | + |
| 187 | + ifconfig cni0 down |
| 188 | + |
| 189 | + ifconfig flannel.1 down |
| 190 | + |
| 191 | + ifconfig docker0 down |
| 192 | + |
| 193 | + ip link delete cni0 |
| 194 | + |
| 195 | + ip link delete flannel.1 |
| 196 | + |
| 197 | + systemctl start docker |
| 198 | + |
| 199 | + systemctl start kubelet |
| 200 | +``` |
0 commit comments