k8s 安装_k8s集群安装部署

1

在node节点上安装redhat-ca.crt:

[root@k8s-node1 ~]# yum install *rhsm* -y

3faad3717ce1772108daf7813bf7b1a6.png2etcd集群配置1 master节点配置 安装kubernetes etcd

yum -y install master etcd

3faad3717ce1772108daf7813bf7b1a6.png 配置etcd选项

vi /etc/etcd/etcd.conf 

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_PEER_URLS="http://192.168.0.140:2380"

ETCD_LISTEN_CLIENT_URLS="http://192.168.0.140:2379,http://127.0.0.1:2379"

ETCD_MAX_SNAPSHOTS="5"

ETCD_NAME="etcd1"

#[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.0.140:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.140:2379"

ETCD_INITIAL_CLUSTER="etcd1=http://192.168.0.140:2380,etcd2=http://192.168.0.141:2380,etcd3=http://192.168.0.142:2380"

2 node节点配置 安装部署kubernetes-node/etcd/flannel/docker

安装命令

yum list installed | grep docker

yum remove docker-ce.x86_64 -y

yum remove docker-ce-cli.x86_64 -y

yum remove containerd.io.x86_64 -y

rm -rf /var/lib/docker

yum -y install kubernetes-node etcd flannel docker

配置etcd

vim /etc/etcd/etcd.conf 

#[Member]

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_PEER_URLS="http://192.168.0.141:2380"

ETCD_LISTEN_CLIENT_URLS="http://192.168.0.141:2379,http://127.0.0.1:2379"

ETCD_NAME="etcd2"

#[Clustering]

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.0.141:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.141:2379"

ETCD_INITIAL_CLUSTER="etcd1=http://192.168.0.140:2380,etcd2=http://192.168.0.141:2380,etcd3=http://192.168.0.142:2380"

3启动etcd cluster

systemctl start etcd.service

systemctl status etcd.service

etcdctl cluster-health

etcdctl member list

3Kubernetes集群配置1master节点配置 配置kube-apiserver配置文件

vim /etc/kubernetes/apiserver

KUBE_API_ADDRESS="--address=0.0.0.0"

KUBE_API_PORT="--port=8080"

KUBELET_PORT="--kubelet-port=10250"  

KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.0.140:2379,http://192.168.0.141:2379,http://192.168.0.142:2379"  

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit"

KUBE_API_ARGS=""

grep -v '^#' /etc/kubernetes/config

KUBE_LOGTOSTDERR="--logtostderr=true"

KUBE_LOG_LEVEL="--v=0"

KUBE_ALLOW_PRIV="--allow-privileged=false"

KUBE_MASTER="--master=http://192.168.0.140:8080"

配置kube-controller-manager配置文件

grep -v '^#' /etc/kubernetes/controller-manager

KUBE_CONTROLLER_MANAGER_ARGS=""

配置kube-scheduler配置文件

grep -v '^#' /etc/kubernetes/scheduler

KUBE_SCHEDULER_ARGS="--address=0.0.0.0"

启动服务for i in  kube-apiserver kube-controller-manager kube-scheduler;do systemctl restart $i; systemctl enable $i;done2nodes节点配置 配置etcd

etcdctl set /atomic.io/network/config '{"Network": "172.16.0.0/16"}'

{"Network": "172.16.0.0/16"}

配置node网络-flannel方式

grep -v '^#' /etc/sysconfig/flanneld 

FLANNEL_ETCD_ENDPOINTS="http://192.168.0.140:2379"

FLANNEL_ETCD_PREFIX="/atomic.io/network"

FLANNEL_OPTIONS="" 

验证网络信息

etcdctl get /atomic.io/network/config 

etcdctl ls /atomic.io/network/subnets

配置node kube-proxy

grep -v '^#' /etc/kubernetes/config 

KUBE_LOGTOSTDERR="--logtostderr=true"

KUBE_LOG_LEVEL="--v=0"

KUBE_ALLOW_PRIV="--allow-privileged=false"

KUBE_MASTER="--master=http://192.168.0.140:8080"

grep -v '^#' /etc/kubernetes/proxy    

KUBE_PROXY_ARGS="--bind=address=0.0.0.0" 配置node kubelet

grep -v '^#' /etc/kubernetes/kubelet 

KUBELET_ADDRESS="--address=127.0.0.1"

KUBELET_HOSTNAME="--hostname-override=192.168.0.141"

KUBELET_API_SERVER="--api-servers=http://192.168.0.140:8080"

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"

KUBELET_ARGS=""

配置其他node

vi /etc/kubernetes/kubelet

KUBELET_HOSTNAME="--hostname-override=x.x.x.x" 启动node服务for i in flanneld kube-proxy kubelet docker;do systemctl restart $i;systemctl enable $i;systemctl status $i ;done4查看集群状态

kubectl get nodes

安装完Docker后,设置FORWARD规则为ACCEPT:iptables -P FORWARD ACCEPT

5测试使用1命令方式 建立podkubectl run nginx --image=nginx --port=80  --replicas=2 遇到问题

-创建成功但是kubectl get pods 没有结果

提示信息:no API token found for service account default

解决办法:编辑/etc/kubernetes/apiserver 去除 KUBE_ADMISSION_CONTROL中的SecurityContextDeny,ServiceAccount,并重启kube-apiserver.service服务

pod-infrastructure:latest镜像下载失败

-报错信息:image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request.

解决方案:yum install *rhsm* -y

登陆容器报错

kubectl exec -it nginx-bl7lc /bin/bash

Error from server: error dialing backend: dial tcp 10.10.10.16:10250: getsockopt: connection refused

解决方法:

10250是kubelet的端口.在Node上检查/etc/kubernetes/kubelet.KUBELET_ADDRESS需要修改为node ip

命令查看

kubectl get pods

NAME                     READY     STATUS    RESTARTS   AGE

nginx-3449338310-h6l9d   1/1       Running   0          6m

nginx-3449338310-n4grl   1/1       Running   0          6m

kubectl get deployment

NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE

nginx          2          2         2       2       13m

kubectl expose deployment nginx --port=80 --type=LoadBalancer (通过端口将应用连接到公网)

service "nginx" exposed

expose命令将会创建一个service,将本地(某个节点上)的一个随机端口关联到容器中的80端口。

kubectl get service(查service)

NAME         CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE

kubernetes   10.254.0.1               443/TCP        21h

nginx        10.254.160.227        80:30255/TCP   7s

外网访问:

elinks --dump http://10.10.10.16:30255

   Welcome to nginx!

删除deployment 与service

kubectl delete deployment nginx

deployment "nginx" deleted

kubectl delete service nginx

service "nginx" deleted

2配置文件方式 定义pod 文件

vim nginx-pod.yaml

apiVersion: v1

kind: Pod

metadata:

  name: nginx

  labels:

 app: nginx

spec:

 containers:

 - name: nginx

   image: nginx

   imagePullPolicy: IfNotPresent

   ports:

   - containerPort: 80

 restartPolicy: Always

发布到kubernetes集群中

kubectl create -f nginx-pod.yaml 

pod "nginx" created查看pod

kubectl get pods

NAME      READY     STATUS    RESTARTS   AGE

nginx     1/1       Running   0          16s

定义与之关联的service 文件

vim nginx-svc.yaml

apiVersion: v1

kind: Service

metadata:

  name: nginx-service

spec:

  type: NodePort

  sessionAffinity: ClientIP

  selector:

app: nginx

  ports:

- port: 80

  nodePort: 30080

创建service

kubectl create -f nginx-svc.yaml 

service "nginx-service" created

查看刚刚创建的service

kubectl get service

NAME            CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE

kubernetes      10.254.0.1               443/TCP        23h

nginx-service   10.254.154.111          80:30080/TCP   20s

验证结果如下

elinks --dump http://10.10.10.16:30080

Welcome to nginx!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值