kubeadm 方式搭建k8s笔记
环境准备四台Centos7虚拟机:10.15.5.230 ks-master10.15.5.231 k8s-node110.15.5.232 k8s-node210.15.5.233 k8s-node3基础设置修改主机名以及hosts文件(全部主机)hostnamectl set-hostname myhostname(分别修改主机的主机名)# 修改hosts文件cat <<EOF &
环境准备
四台Centos7虚拟机:
10.15.5.230 ks-master
10.15.5.231 k8s-node1
10.15.5.232 k8s-node2
10.15.5.233 k8s-node3
基础设置
修改主机名以及hosts文件(全部主机)
hostnamectl set-hostname myhostname(分别修改主机的主机名)
# 修改hosts文件
cat <<EOF > /etc/sysctl.d/k8s.conf
10.15.5.230 k8s-master
10.15.5.231 k8s-node1
10.15.5.232 k8s-node2
10.15.5.233 k8s-node3
EOF
关闭防火墙(测试环境省事)
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
vim /etc/selinux/config
SELINUX=disable
关闭交换分区
## 将/etc/fstab中swap的设置注释掉
vim /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
PS:这些全部配置完成之后重启一下服务器:reboot
安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
um-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
启动docker
systemctl start docker
systemctl enable docker
docker version
PS:在安装完成之后只有启动了才会显示server以及client,不启动只有client。这两个都显示则说明docker已经安装完成并且正常启动了。
配置docker的镜像加速
首先,你需要一个阿里云的帐号,没有的自己去注册~
登录阿里云控制台,可以直接在搜索栏搜docker镜像加速,然后进入docker镜像加速控制台
以下为我的加速器代码块
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://kgo7ly9t.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装kubernetes
配置国内源
由于国内网络原因, 官方文档中的地址不可用, 这边换成阿里的源
vim /etc/yum.repos.d/k8s.repo
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kube*
安装&启动
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet
systemctl start kubelet
修改网络设置
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl --system
PS:以上配置需要在node节点也执行
初始化Master节点
kubeadm config print init-defaults > kubeadm-init.yaml
修改所生成文件
以下为修改内容:
[root@k8s-master ~]# cat kubeadm-init.yaml |egrep "advertiseAddress|imageRepository"
advertiseAddress: 10.15.5.230 //修改为本机地址,也就是你master的地址
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
修改完成后文件内容如下
[root@k8s-master ~]# cat kubeadm-init.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 10.15.5.230
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: k8s-master
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.19.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
scheduler: {}
下载镜像
kubeadm config images pull --config kubeadm-init.yaml
开始初始化
kubeadm init --config kubeadm-init.yaml
完成后会输出以下内容:
此处最后两行记得保存一下,为node节点加入集群命令:
kubeadm join 10.15.5.230:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:d088818dfbcd88a133a2daedd29e923601d66f2a1f7d6c1b8d1d4d1785a079d4
配置环境变量
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
使当前用户可以执行kubectl命令。
配置网络
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
cat kubeadm-init.yaml | grep serviceSubnet:
初始化网络
kubectl apply -f calico.yaml
查看node信息
kubectl get node
安装Dashboard
下载&部署
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml
查看pods状态
kubectl get pods --all-namespaces
创建登录用户
[root@k8s-master ~]# cat dashboard-adminuser.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
kubectl apply -f dashboard-adminuser.yaml
生成证书
grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt
grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key
openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"
PS:最后一条命令过程中输入密码处直接回车就好。
kubecfg.p12是证书文件,需要在浏览器导入,不然在输入master ip+端口后会有如下报错
解决方法就是将上面生成的证书文件导入浏览器,我用的是谷歌浏览器。
浏览器右上角,找到设置
Privacy and security 中 Security
进去之后往下滑,找到Manage certificates
在 Your certficates 中点击Import按钮,导入上面生成的证书文件
导入成功后下面会有:org-system:masters
登录
https://10.15.5.230:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
这边选择token登录
查看token:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
登录成功:
添加node节点
准备工作在三台node上完成,这里就不再写了,和上面一样
将node加入集群
kubeadm join 10.15.5.230:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:d088818dfbcd88a133a2daedd29e923601d66f2a1f7d6c1b8d1d4d1785a079d4
PS:该命令为初始化完成后让保留的那两行,忘记了的可以去上面看看。
命令行查看节点状态
kubectl get nodes
Dashboard 查看节点状态
kubeadm方式搭建就到这里了,后面二进制安装等我学会再更新~
更多推荐
所有评论(0)