安装k8s 1.20 记录
OS:CentOS7.6
systemctl disable --now firewalld
systemctl disable --now dnsmasq
systemctl disable --now NetworkManager关闭selinux 防火墙 关闭swap 开启ntp同步时间
Create Container RunTimes
Installing Kubernetes with deployment tools
#安装docker并更换docker镜像仓库
#提前确定好主机名 如果安装好k8s后再更改会无法运行 localhost.localdomain
#k8s配置文件路径/etc/kubernetes/manifests
a. 个节点 配置主机名、配置hosts文件
cat<> /etc/hosts
172.18.30.166 k8s-master01
172.18.30.167 k8s-node01
172.18.30.168 k8s-node02
172.18.30.169 k8s-node03
EOF
b. 各节点 安装docker-CE
step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
修改docker源镜像
echo ‘{“registry-mirrors”:[“https://docker.mirrors.ustc.edu.cn/”]}’ > /etc/docker/daemon.json
EOF
Step 4: 开启Docker服务
systemctl enable docker --now
sudo service docker start
检验
docker version
c. 所有节点Installing kubeadm
#添加kubernetes源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#设置selinux
setenforce 0
#关闭swap 转发到iptables
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
swapoff -a && sed -ri ‘s/.swap./#&/’ /etc/fstab
#Installing kubeadm, kubelet and kubectl
#安装包–disableexcludes=kubernetes 禁掉除了这个之外的别的仓库 注意安装时的版本
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
#开启服务kubelet
systemctl enable kubelet --now
c. master01使用kubeadm创建集群
kubeadm init --kubernetes-version=v1.20.0
–image-repository registry.aliyuncs.com/google_containers
–service-cidr=10.1.0.0/16
–pod-network-cidr=10.224.0.0/16
–apiserver-advertise-address=172.18.30.166
#pull 镜像kubeadm config images pull 可以提前使用
#root、非用户需要执行 否则重新连接后登陆参数会消失
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown
(
i
d
−
u
)
:
(id -u):
(id−u):(id -g) $HOME/.kube/config
#root用户执行
export KUBECONFIG=/etc/kubernetes/admin.conf
#成功后会出现加入集群的token 也可以使用kubeadm token create --print-join-command 查看
kubeadm join 172.18.30.166:6443 --token d1nppx.f0w6avxvq803niqk
–discovery-token-ca-cert-hash sha256:410a4d0e671f9982712f2ea6813a637740d5b02ced5011e7676eb06cc5f7b585
在每个node上执行添加node节点
d. 个node节点执行 加入集群 此时个集群状体not ready 因为没有安装网络插件
kubeadm join 172.18.30.166:6443 --token d1nppx.f0w6avxvq803niqk
–discovery-token-ca-cert-hash sha256:410a4d0e671f9982712f2ea6813a637740d5b02ced5011e7676eb06cc5f7b585
#kubectl get nodes 查看各node状态
#kubectl get pods -A 查看pods状态
kubectl get pods --all-namespaces
#kubectl describe pods podname -n namespace
#kubectl -n kube-system get svc 查看服务
#kubectl get pod podname1 podname2 #获取pod信息
#kubectl -n kube-system get cm kubeadm-config -o yaml 配置文件
e. 安装网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
#查看工作状态
kubectl get node
f. 添加集群监控
///----------------------------------------------
Metrics Server 供 Dashboard 等其他组件使用,
是一个扩展的 APIServer,依赖于 API Aggregator。
所以,在安装 Metrics Server 之前需
要先在 kube-apiserver 中开启 API Aggregator。
-----------------------------------------------///
///----------------------------------------------
检查 API Server 是否开启了 Aggregator Routing:
查看 API Server 是否具有 --enable-aggregator-routing=true 选项。
含义:API Aggregation 允许在不修改 Kubernetes 核心代码的同时扩展 Kubernetes API,
即:将第三方服务注册到 Kubernetes API 中,
这样就可以通过 Kubernetes API 来访问第三方服务了,
例如:Metrics Server API。
----------------------------------------------///
vim etc/kubernetes/manifests/kube-apiserver.yaml
#在–enable-bootstrap-token-auth=true下添加一行 修改 manifests 配置后 API Server 会自动重启生效。
–enable-aggregator-routing=true
#下载yaml文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1
修改yaml 的Deployment
- args:
- --kubelet-preferred-address-types=InternalIP # 删掉 ExternalIP,Hostname这两个,这里已经改好了,你那边要自己核对一下
- --kubelet-insecure-tls # 加上该启动参数
image: k8s.gcr.io/metrics-server/metrics-server:v0.4.1 # 镜像地址根据情况修改
#拉去镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.2 gcr.io/google_containers/metrics-server-amd64:v0.3.2
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.2
#安装yaml文件需要和版本对应0.3或0.4
kubectl apply -f components.yaml
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
#查看状态
kubectl top node