K8S入门------1、k8s 1.19.2安装

环境:

 

主机名 IP 操作系统 docker k8s版本 备注
k8s-master 10.13.19.51 Centos 7.9 19.03.13 1.19.2 master节点
k8s-node01 10.13.19.52 Centos 7.9 19.03.13 1.19.2 node节点
k8s-node02 10.13.19.53 Centos 7.9 19.03.13 1.19.2 node节点

一、Docker安装

所有节点都需要安装docker
 

1.安装阿里云docker源

[root@centos7 ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

 

2.安装docker

 

2.1 docker安装版本查看

[root@centos7 ~]# yum list docker-ce --showduplicates | sort -r`

2.2 安装docker

[root@centos7 ~]# yum -y install docker-ce-19.03.13 bash-completion

3. 配置镜像加速器

3.1 配置daemon.json文件

[root@centos7 ~]# mkdir -p /etc/docker
[root@centos7 ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

重启服务

[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl enable --now docker

加速器配置完成
 

二、k8s安装准备工作 

安装Centos是已经禁用了防火墙和selinux并设置了阿里源。master和node节点都执行本部分操作。

1. 配置主机名

 

1.1 修改主机名

[root@centos7 ~]# hostnamectl set-hostname k8s-master
[root@centos7 ~]# hostname
k8s-master

退出重新登陆即可显示新设置的主机名k8s-master
 

1.2 修改hosts文件

[root@master ~]# cat >> /etc/hosts << EOF
10.13.19.51 k8s-master
10.13.19.52 k8s-node01
10.13.19.53 k8s-node02
EOF

2. 验证mac地址uuid

[root@master ~]# cat /sys/class/net/ens33/address
[root@master ~]# cat /sys/class/dmi/id/product_uuid

保证各节点mac和uuid唯一
 

3. 禁用swap

 

3.1 临时禁用

[root@k8s-master ~]# swapoff -a

3.2 永久禁用

若需要重启后也生效,在禁用swap后还需修改配置文件/etc/fstab,注释swap

[root@k8s-master ~]# sed -i.bak '/swap/s/^/#/' /etc/fstab

4. 内核参数修改

[root@k8s-master ~]# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@k8s-master ~]# sysctl -p /etc/sysctl.d/k8s.conf

5. 设置kubernetes源

 

5.1 新增kubernetes源

[root@k8s-master ~]# cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

5.2 更新缓存

[root@k8s-master ~]# yum clean all
[root@k8s-master ~]# yum -y makecache

三、Master节点安装

1. 安装kubelet、kubeadm和kubectl

1.1 安装三个包

[root@k8s-master ~]# yum install -y kubelet-1.19.2 kubeadm-1.19.2 kubectl-1.19.2

1.2 安装包说明

kubelet 运行在集群所有节点上,用于启动Pod和容器等对象的工具
kubeadm 用于初始化集群,启动集群的命令工具
kubectl 用于和集群通信的命令行,通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

1.3 启动kubelet

启动kubelet并设置开机启动

[root@k8s-master ~]# systemctl enable --now kubelet

1.4 kubelet命令补全

[root@k8s-master ~]# source /usr/share/bash-completion/bash_completion
[root@k8s-master ~]# echo "source <(kubectl completion bash)" >> ~/.bash_profile
[root@k8s-master ~]# source .bash_profile

2. 初始化Master

2.1 初始化

[root@master ~]# kubeadm init \
--apiserver-advertise-address=10.13.19.51 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.19.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

apiserver-advertise-address指定master的interface,pod-network-cidr指定Pod网络的范围,这里使用flannel网络方案。

记录kubeadm join的输出,后面需要这个命令将各个节点加入集群中。
 

2.2 加载环境变量

[root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@k8s-master ~]# source .bash_profile
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

2.3. 配置hosts

cat >> /etc/hosts << EOF
151.101.108.133 raw.githubusercontent.com
EOF

2.4.安装pod网络

[root@k8s-master ~]# wget https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml

四、Node节点安装

1. 安装kubelet、kubeadm和kubectl

 
同master节点
 

2. 下载镜像

 
同master节点
 

3. 加入集群

 
以下操作master上执行
 

3.1 查看令牌

[root@k8s-master ~]# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
j5eoyz.zu0x6su7wzh752b3 <invalid> 2019-06-04T17:40:41+08:00 authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token

发现之前初始化时的令牌已过期
 

3.2 生成新的令牌

[root@master ~]# kubeadm token create
1zl3he.fxgz2pvxa3qkwxln

3.3 生成新的加密串

[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'

3.4 node节点加入集群

 
在node节点上分别执行如下操作:

[root@node01 ~]# kubeadm join 10.13.19.51:6443 --token 1zl3he.fxgz2pvxa3qkwxln --discovery-token-ca-cert-hash sha256:5f656ae26b5e7d4641a979cbfdffeb7845cc5962bbfcd1d5435f00a25c02ea50

五、集群测试

1. 部署应用

1.1 命令方式

[root@master ~]# kubectl run httpd --image=httpd --replicas=3
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/httpd-app created

通过命令行方式部署apache服务
 

1.2 配置文件方式

cat >> nginx.yml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
restartPolicy: Always
containers:

  • name: nginx
    image: nginx:latest
    EOF

[root@master ~]# kubectl apply -f nginx.yml
deployment.apps/nginx created

通过配置文件方式部署nginx服务
 

2. 状态查看

2.1 查看节点状态

[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 1h v1.19.2
node01 Ready <none> 1h v1.19.2
node02 Ready <none> 1h v1.19.2

2.2 查看pod状态

[root@k8s-master ~]# kubectl get pod --all-namespaces

2.3 查看副本数

[root@master ~]# kubectl get deployments --all-namespaces

[root@master ~]# kubectl get pod -o wide --all-namespaces

2.4 查看deployment详细信息

[root@master ~]# kubectl describe deployments

2.5 查看集群基本组件状态

[root@master ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}

至此完成Centos7.9下k8s(v1.19.2)集群部署。

猜你喜欢

转载自blog.51cto.com/xiehaitang/2571120